Portabase:自托管的数据库备份与恢复工具
Source: Dev.to

备份是每个人都知道应该做的事,但很少有人愿意去设置。由于安全顾虑、网络复杂性以及那些假设使用者具备大量专业知识的工具,数据库备份往往被忽视,直到出现故障才被迫处理。
Portabase 是一款数据库备份与恢复工具,当前支持 PostgreSQL、MySQL、MariaDB 和 MongoDB(Redis 即将推出)。
Portabase 采用安全至上(secure‑by‑design)架构,使用中心服务器和轻量级代理,实现边缘部署并跨多个网络运行。放心吧,你永远不需要把数据库暴露到互联网!
这些代理负责一切:它们备份你的数据、加密后并将其发送到你偏好的存储位置——整个过程无需任何技术技能。你可以通过网页界面统一管理。
着急吗?可以使用 CLI 或文档中提供的即用型 Docker Compose 设置进行快速上手。文档。
Portabase 如何工作?
Portabase 的生态系统围绕三个主要组件构建:
中央服务器(管理平面)
- 提供 用户友好的界面,作为所有备份和恢复操作的中心控制平面。
- 用户可以 注册和管理代理,配置备份策略,查看历史备份。
- 仪表板显示存储使用情况、保留合规性,并让团队从单一位置管理多个数据库和代理。
代理(执行平面)
- 部署在数据库主机上的轻量级连接器,执行实际的备份和恢复操作。
- 采用 出站拉取模式,无需在受保护的基础设施上打开入站端口,同时保持与中央服务器的安全通信。
CLI(助手)
- 一个命令行工具,简化仪表板和代理的安装与配置。
- 自动化环境设置、配置生成以及操作命令。
核心功能与能力
Portabase 是 基于 cron 的,并支持三种适用于逻辑备份的保留策略:
- 保留固定数量的备份
- 基于时间的保留(n 天)
- GFS 轮换(祖父‑父‑子)
这些策略适用于逻辑备份制品,并帮助执行组织的数据保留标准。
对于组织使用,Portabase 实现了 工作区结构,让您能够管理资源(数据库、存储位置和通知器)的访问和分段。这在同一实例内为团队和项目强制权限边界。
高度模块化,拥有众多集成
平台支持多种存储后端,包括:
- 本地文件系统
- 任意兼容 S3 的存储(AWS S3、CloudFlare R2、MinIO、RustFS 等)
- Google Drive
Portabase 旨在实现灵活性和可扩展性。您可以将每个数据库链接到 多个存储目标,从而实现冗余和弹性——即使某个存储位置出现故障,备份仍能保持安全。
通知与警报集成
Portabase 与流行的通知平台(如 Slack、Discord 和 Telegram)集成,使团队能够实时了解备份状态。警报可以在备份成功或失败时通知您,帮助实现主动监控并加快响应速度。
这些集成帮助确保关键备份操作不被忽视,并且可以轻松将 Portabase 融入现有的团队工作流和沟通渠道。
内部实现
中心服务器使用 Next.js 16 构建,利用服务器端渲染 (SSR) 和优化的客户端水合,以提供低延迟的界面。后端使用 PostgreSQL 进行可靠的数据存储,配合 Drizzle ORM 管理数据库交互,确保类型安全的查询、事务完整性以及高效的模式迁移。
最初用 Python 编写的代理已完全重构为 Rust 🦀,利用 Tokio 的异步运行时实现高吞吐、非阻塞操作。此重写:
- 将 Docker 镜像大小降低了 4×
- 最小化运行时错误
- 保证在多个数据库之间进行可靠的并发备份和恢复操作
Rust 的内存安全性和性能保证使得该代理非常适合高 I/O 需求的生产环境。
如果你觉得 Portabase 有用,请别忘了在 GitHub 上给它点个星!




