开源 · MySQL、MariaDB 和 PostgreSQL 的备份与恢复

备份从不锁库。恢复精确到秒。

DumpCat 是一个自带 Web 界面的单文件程序。它按计划执行备份,压缩并加密,把副本传到 S3、Google Drive、OneDrive 或 SFTP,校验备份,并在你需要时把数据恢复回来。支持 Linux 和 Windows,可完全离线运行。

MySQL 5.7 · 8.0 · 8.4  /  Percona Server  /  MariaDB 10.x · 11.x  /  PostgreSQL 10+

时间点恢复

模拟演示

有人在 14:37:12 误删了 orders 表。拖动标记选择恢复点:DumpCat 会挑选最新的基础备份,以及需要重放的 binlog 文件。PostgreSQL 同理,使用的是归档的 WAL。

full · 02:00
DROP TABLE orders · 14:37:12
现在
  • 全量备份(mysqldump)
  • 归档的 binlog,每个文件最多 15 分钟
  • 恢复时重放
  • 事故
恢复到
18/10/2026 14:37:11
基础备份
20261018-020000-fullmysqldump · 一致性时间点 02:00:03
重放 binlog
mysql-bin.000123 → mysql-bin.000173共 51 个文件,改动任何数据前逐一校验
事故发生前:orders 表完好无损

安装

一分钟跑起来

Linux 上只需一条命令,Windows 上下载后双击即可。安装程序会注册一个开机自启的服务,并安装与你的数据库版本匹配的备份工具;Web 界面已打包在同一个文件里。

在 Linux 服务器上粘贴这条命令并按回车:

bash
curl -fsSL https://dumpcat.cc/install.sh | sudo sh

它会下载最新版本、核对校验和,并以 systemd 服务的形式安装到 /opt/dumpcat,同时安装 rclone、MySQL/MariaDB 客户端、对应版本的 mariabackup 或 XtraBackup,软件源里有 mydumper 时也会一并安装;--postgres 16 会额外安装 PostgreSQL 16 客户端工具。选项写在 sh -s -- 之后:--port 9090、--listen 127.0.0.1、--tls-auto。

安装之后

  1. 打开 http://<server-ip>:6369使用安装程序打印的一次性初始化令牌创建管理员账号(再次显示:dumpcat setup-token)。
  2. 添加数据库服务器Test connection 会列出缺少的权限以及可用的备份方式。
  3. 添加存储Test 会写入、读取并删除一个测试文件。
  4. 创建备份任务选择计划、加密、存储和保留策略,然后点击 Save & run now。

端口 6369 拼出 MEOW

在手机九宫格键盘上按 6-3-6-9,对应的字母正好拼出 MEOW(喵)。这就是 Web 界面的默认端口。

备份方式

不同数据库、不同规模,各有合适的工具

对于 MySQL 和 MariaDB,DumpCat 可调用 mysqldump、mydumper 以及 XtraBackup / MariaBackup。添加服务器时,Test connection 会显示版本、datadir、每个数据库的大小,以及这台机器上可用的备份方式。

mysqldump逻辑备份mydumper逻辑备份,并行XtraBackup / MariaBackup物理备份,热备
会锁库吗?InnoDB 不锁,靠的是 --single-transaction为同步各线程加几毫秒全局锁,之后不再加锁不锁 InnoDB;结束时有极短暂的备份锁
备份速度每个数据库 1 个线程,多个数据库并行多线程,表按行分块最快:多线程复制文件
恢复速度最慢快:并行,加载完成后再建索引非常快:复制文件 + prepare
增量备份不支持不支持支持
单库恢复、改名支持支持不支持,只能恢复整个实例
最适合20–50 GB 以下的数据库需要逐个恢复的大型数据库100 GB 到数 TB,要求低 RTO

PostgreSQL 10 及以上:pg_dump 按数据库备份,表并行导出和恢复,可恢复为新名称或恢复到另一台服务器;pg_basebackup 通过复制连接备份整个集群,配合持续 WAL 归档,可恢复到某个时间、某个还原点或某个 WAL 位置。

存储

一个任务,多处副本

可以先写入本地磁盘再上传,也可以不占用临时磁盘、直接流式上传到云端。每个存储各自设定保留份数,例如本地保留 3 份备份,S3 上保留 30 天。

  • 本地 / NFS恢复最快;别和 datadir 放在同一块盘上
  • S3AWS、Cloudflare R2、MinIO、Wasabi、DigitalOcean
  • Google DriveOAuth 或服务账号
  • OneDrive包括 SharePoint
  • FTP / FTPS显式或隐式 TLS
  • SFTP密码或私钥
  • WebDAVNextcloud 等
  • Backblaze B2另有 Azure Blob 和 Dropbox
  • rclone另外 70 多种后端

标准格式,不被锁定

<storage>/
  shop-nightly/
    20261018-020000-full/
      manifest.json      # sha256, binlog, GTID
      shop.sql.zst.age
      crm.sql.zst.age
      _users.sql.zst.age # users & grants
    binlog/20261018/
      mysql-bin.000123.zst.age

运行 DumpCat 的机器没了?重新装一份,再次添加存储,点击 Import backup catalog:所有备份都会重新列出来。即使没有 DumpCat,也能用 age、zstd 加上 mysql 或 pg_restore 完成恢复。

网络连接

数据库没开端口?照样能备份。

当备份服务器无法直接连上数据库时(比如有防火墙、NAT,或数据库只监听 127.0.0.1),可以反过来让数据库主机主动连接 DumpCat。有两种方式,都不需要在数据库主机上开放端口。备份、恢复和时间点恢复都与直连时完全一样。

Agent HTTPS

DumpCat备份服务器备份与恢复mysqldump · mydumper127.0.0.1:portAgent 端点HTTPS · Web 界面端口可通过 HTTPS 访问数据库主机无入站端口MySQL / MariaDB无需改动 · 仅监听 127.0.0.1127.0.0.1:3306dumpcat agent白名单 127.0.0.1:3306本机不开放任何端口防火墙 / NAT← HTTPS · 由数据库主机发起3306 入站已拦截,也无需开放DumpCat备份服务器备份与恢复mysqldump · mydumper127.0.0.1:portAgent 端点HTTPS · Web 界面端口可通过 HTTPS 访问防火墙 / NAT↑ HTTPS由数据库主机发起3306 入站已拦截,也无需开放数据库主机无入站端口dumpcat agent白名单 127.0.0.1:3306127.0.0.1:3306MySQL / MariaDB无需改动 · 仅监听 127.0.0.1本机不开放任何端口
数据库主机建立隧道DumpCat 的数据库流量在隧道内反向传输
数据库主机需要
能通过出站 HTTPS 访问 DumpCat
数据库
无需改动,即使只监听 127.0.0.1
安装
sudo ./install.sh --agent --server … --key …
适合
不想改动网络和 MySQL 配置的场景

内置 WireGuard UDP · 默认关闭

DumpCat备份服务器备份与恢复mysqldump · mydumper127.0.0.1:port内置 WireGuard10.66.0.1 · UDP 51820开放 UDP 51820数据库主机无入站端口MySQL / MariaDB监听 10.66.0.210.66.0.2:3306wg-quick@dumpcat10.66.0.2 · keepalive 25 秒本机不开放任何端口防火墙 / NAT← WireGuard UDP · 由数据库主机发起3306 入站已拦截,也无需开放DumpCat备份服务器备份与恢复mysqldump · mydumper127.0.0.1:port内置 WireGuard10.66.0.1 · UDP 51820开放 UDP 51820防火墙 / NAT↑ WireGuard UDP由数据库主机发起3306 入站已拦截,也无需开放数据库主机无入站端口wg-quick@dumpcat10.66.0.2 · keepalive 25 秒10.66.0.2:3306MySQL / MariaDB监听 10.66.0.2本机不开放任何端口
数据库主机建立隧道DumpCat 的数据库流量在隧道内反向传输
数据库主机需要
标准 WireGuard,出站 UDP 51820 到 DumpCat
数据库
监听 VPN 地址,数据库账号允许来自 10.66.0.1 的连接
安装
在 WireGuard 页面启用,复制 dumpcat.conf,执行 systemctl enable --now wg-quick@dumpcat
适合
已在使用 WireGuard 的团队,或用作通往整个数据库网段的网关

连接由数据库主机发起,数据在连接内双向传输。物理备份(XtraBackup / MariaBackup)可以通过以 --allow-physical 启动的 Agent 进行;走 WireGuard 时,仍需在数据库主机上安装 DumpCat。

运维

那些本该自己写脚本的活,都替你做好了

全部内置于 DumpCat,在 Web 界面中开启和调整。

上传前加密
age(ChaCha20-Poly1305 + scrypt)在你自己的服务器上运行,云服务商无法读取你的数据。
完整性校验
每个文件都有 SHA-256。校验时会重新读取、解密、解压,并检查是否有 Dump completed 这一行。
GFS 保留策略
保留 N 份备份、N 天,或每天、每周、每月的最后一份。增量链只会随其全量备份一起删除。
稳妥的恢复
删除任何数据库之前,先对每个文件做试解密。可以恢复为新名称,或恢复到另一台服务器、另一个版本(MySQL 8 ↔ MariaDB,PostgreSQL 15 → 16)。
账号与角色
admin、operator、viewer 三种角色。支持 TOTP 双因素认证、API 令牌、审计日志,多次登录失败后锁定账号。
通知
邮件、Telegram、Slack、Discord 以及 HMAC 签名的 Webhook,可在失败或成功时发送。
防火墙后的数据库
数据库主机上的 Agent 通过 HTTPS 主动连接 DumpCat,或者让主机加入内置的 WireGuard。无需为数据库开放任何端口。
自我更新
dumpcat update 会校验 SHA-256、备份配置、等待正在运行的备份完成,失败时自动回滚。

AI 友好

AI 友好:让 AI 助手替你盯着备份

DumpCat 内置 MCP 服务器,并提供 Markdown 格式的 API 参考文档。Claude Code、Claude Desktop 和其他 AI Agent 用 API 令牌接入后,可以查询哪些备份失败了、读取日志并解释原因;使用完全权限的令牌,还能运行备份、校验和恢复演练。

内置 MCP 服务器
端点 /api/mcp 是 DumpCat 的一部分,无需额外安装:提供概览、告警、任务、备份、日志、恢复、演练以及时间点恢复预览等工具。通过 stdio 启动本地服务器的客户端可使用 dumpcat mcp。
默认安全
新建的令牌只能查看。恢复、删除、凭据和设置永远不经过 MCP;返回结果中不含密码、密钥和令牌,AI 助手发起的任何操作都会写入审计日志。
Markdown 格式的 API 参考
/api/docs.md 由服务器自动生成:包括认证方式、约定、curl 示例,以及每个路由所需的角色和令牌。可以直接粘贴到 AI 对话中,也可以让 Agent 读取后调用 REST API。
一分钟完成配置
DumpCat 中的 API & MCP 页面会创建令牌,给出 Claude Code 命令以及 Claude Desktop 和其他客户端的配置,还有一个 Test 按钮用来检查连接。

接入 Claude Code

bash
claude mcp add --transport http dumpcat \
  https://backup.example.com/api/mcp \
  --header "Authorization: Bearer mv_…"

然后直接用大白话提问:“昨晚哪些备份失败了?为什么?”、“shop-nightly 有 24 小时内的备份吗?”、“能把 orders 恢复到昨天 14:37 吗?”

对比

DumpCat 与同类工具对比

选择一个工具,逐项对比所有功能。关于其他产品的信息,在完整对比页面上均注明了来源和日期。

DumpCatSQLBackupAndFTP
Every feature freeYesNo paid tierPartlyFree: 2 DBs, basic features
Runs on your own serversYesOne binaryYesWindows only
LinuxYesamd64, arm64PartlyRemote full backups only
Hot physical backupsYesXtraBackup, MariaBackupNoNo physical backups
Point-in-time recoveryYesTo the second or a GTIDPartlyChosen-time restore undocumented
EncryptionYesage, before uploadPaid planProfessional edition
Data skips the vendorYesServer to your storageYes
Automatic backup checkYesEvery run, plus drillsPartlyVia scheduled restore jobs

开源

免费、开源,数据始终归你所有

DumpCat 以 Apache-2.0 许可证发布。无需注册账号,无需许可证密钥,也没有把功能藏起来的付费版:本页介绍的一切,都包含在你下载的版本里。

Apache-2.0 许可证
个人和公司均可使用,可以修改和再分发。完整条款见 LICENSE。
无遥测
DumpCat 不向任何地方发送使用数据。它唯一主动发起的请求,是每天读取一次 latest.json 以提示新版本,而且可以在设置(Settings)中关闭。
没有中间商
备份、数据库密码和加密密钥只会从你的服务器传到你选择的存储。
签名发布
每次更新都使用 ed25519 签名,安装前会校验 SHA-256。自行构建只需要 Go。

从源码构建

bash
git clone https://github.com/theweakestharrison/DumpCat.git
cd DumpCat
go build -o dumpcat ./cmd/dumpcat

欢迎提交 Bug 报告、Pull Request 和翻译,详见 CONTRIBUTING.md。安全问题请按 SECURITY.md 中的说明私下报告。

下载

最新版本