在生产实际环境中,用户可能存在多种数据库、多实例数据库、多数据库的定时备份与恢复需求。例如: - 存在多种数据库,如 MySQL、达梦、PG。 - 同一数据库存在多实例,如达梦在不同 IP/端口/实例。 - 同一 IP 与端口下也可能存在多个数据库。
因此需要一个统一的、多数据库的备份工具,并支持多份保留与多地备份。
DbKeeper)。local/host/s3/webdav,并支持配置保留数量。yaml 格式。说明:S3 的 path 需要包含 bucket/前缀,例如 snapshots-bucket/mysql/97_snapshots/。
补充:数据库导出工具需要预先安装。可选字段 cmd_path 用于指定导出命令路径(如 mysqldump、pg_dump、dexp)。
本地使用 SQLite 保存备份过程中的元数据。
所有备份文件在导出后,将日志文件和备份文件打包成 tar ,然后压缩为 .zst(Zstandard)格式。
文件命名规则:{db_type}_{ip}_{port}_{schema}_{version}_{timestamp}.tar.zst。
internal/appmeta/version.go。go build -ldflags "-X dbkeeper-core/internal/appmeta.BuildTime=2026-03-03T16:30:00+08:00"。PowerShell
$env:CGO_ENABLED="0"; $env:GOOS="linux"; $env:GOARCH="amd64"; $bt=Get-Date -Format "yyyy-MM-ddTHH:mm:sszzz"; go build -trimpath -ldflags "-s -w -X dbkeeper-core/internal/appmeta.BuildTime=$bt" -o "dist\dbkeeper-core-linux-amd64" .
bash
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags "-s -w -X dbkeeper-core/internal/appmeta.BuildTime=$(date '+%Y-%m-%dT%H:%M:%S%z')" -o dist/dbkeeper-core-linux-amd64 .
如果你想带时区冒号(如 +08:00):
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
go build -trimpath \
-ldflags "-s -w -X dbkeeper-core/internal/appmeta.BuildTime=$(date '+%Y-%m-%dT%H:%M:%S%:z')" \
-o dist/dbkeeper-core-linux-amd64 .
本软件不包含任何数据库客户端实用程序。
用户必须依据供应商许可安装数据库工具。
目前该工具仅支持MySQL、dm、PG
使用对应数据库时,确保当前系统安装了对应系统的备份工具,如:MySQL使用mysqldump,dm使用dexp,pg使用pg_dump
配置文件约定:运行时若不存在 config.yaml,程序会优先从同目录 config-backup.yaml 复制生成;若同目录也不存在,则使用二进制内嵌的 config-backup.yaml 模板生成 config.yaml。因此发布包可以只放二进制,也可以额外放 config-backup.yaml 作为外部可维护模板。
使用命令
```sh # 设置执行权限 chmod 111 ./dbkeeper-core-linux-amd64
# 执行 ./dbkeeper-core-linux-amd64 -config ./config.yaml ```
备份产物为 .tar.zst 格式(tar 打包 + zstd 压缩),包含数据库导出文件和执行日志。
① 安装 zstd(如果没有)
CentOS / RHEL / Stream 9:
sudo dnf install zstd
Ubuntu / Debian:
sudo apt install zstd
② 解压
一步完成解压和解包:
tar -I zstd -xf file.tar.zst
或分步执行:
zstd -d file.tar.zst # 解压得到 file.tar
tar xf file.tar # 解包得到原始文件
$ claude mcp add dbkeeper-core \
-- python -m otcore.mcp_server <graph>