在 CentOS 上使用 Dolphin 进行数据备份
一、先明确 Dolphin 的类型
- DolphinDB:面向大数据的分布式数据库,提供内置的 backup/restore 能力,适合对 DFS 分布式表/数据库 做时间点一致的备份与恢复,并可校验与断点续备。
- Dolphin 文件管理器(KDE):图形化的 文件复制/同步 工具,适合做用户目录、项目目录等常规文件的手动或脚本化拷贝与增量同步。
二、使用 DolphinDB 进行数据库备份与恢复(推荐)
- 备份目标与原则
- 备份文件默认位于执行备份任务的数据节点本机目录;备份会对数据库/表加锁,期间可读不可写,建议在写入低峰期执行。
- 支持断点续备与分区级增量(仅覆盖更新时间不一致的分区);备份与数据库在备份开始时刻保持时间点一致性。
- 常用备份方式(在控制节点或数据节点执行,需登录到 DolphinDB 会话)
- 备份整个数据库
- 代码示例:
- dbPath = “dfs://testdb”
- backupDir = “/home/$USER/backupDB”
- submitJob(“backupDB”,“backup testdb”,backupDB,backupDir,dbPath)
- 备份单张分布式表
- 代码示例:
- dbPath = “dfs://testdb”; tbName = `quotes_2
- backupDir = “/home/$USER/backupTb”
- submitJob(“backupTable”,“backup quotes_2”,backupTable,backupDir,dbPath,tbName)
- 备份指定分区
- 代码示例:
- dbPath = “dfs://testdb”; tbName = `quotes_2
- backupDir = “/home/$USER/backupPar”
- pars = [“/Key3/tp/20120101”,“/Key4/tp/20120101”]
- submitJob(“backupPartitions”,“backup parts”,backup,backupDir,dbPath,tbName,pars)
- 任务监控与完整性校验
- 查看任务进度:getBackupStatus()(返回已完成分区数、百分比、预计完成时间)
- 列出备份分区:getBackupList(backupDir, dbPath, tbName)
- 查看分区元数据:getBackupMeta(backupDir, dbPath, tbName, chunkID)
- 校验备份一致性:checkBackup(backupDir, dbPath)(失败分区建议以 force=true 重备)
- 恢复数据
- 全量恢复到同名表(覆盖式):restore(backupDir, “dfs://db1”, “mt”, “%”, true, loadTable(“dfs://db2”,“mt”))
- 可按条件/分区恢复,详见 restore 参数说明与官方手册。
- 跨集群迁移(离线方式)
- 先在各数据节点本机完成备份(backup),再用 rsync/scp 将备份目录同步到目标集群各节点的相同路径,最后在目标集群执行 restore 完成导入。
三、使用 Dolphin 文件管理器进行文件级备份(图形界面)
- 适用场景:用户目录、配置目录、项目文件等非数据库数据。
- 基本操作
- 在 Dolphin 中选中需要备份的文件夹,使用“复制到/移动到”将内容拷贝到备份位置(如外置盘、NFS、SMB 共享)。
- 对大目录建议分批复制,避免中断;复制完成后打开目标目录核对文件数量/大小/时间戳。
- 自动化与增量
- 可结合 rsync 做定时增量(Dolphin 负责浏览与选择,rsync 负责高效同步):
- 首次全量:rsync -a --delete /source/ /backup/
- 后续增量:rsync -a --delete --link-dest=/backup/last /source/ /backup/current
- 用 cron 定时执行,并在每次完成后更新 last 指向当前快照。
四、CentOS 上的通用备份策略与自动化
- 策略要点
- 明确备份对象与频率(如系统配置、业务数据、数据库),选择工具(如 tar、rsync、dd),设定本地/网络/云存储目标,编写备份脚本并做定期恢复演练与完整性校验。
- 示例:用 rsync 做每日增量并保留快照
- 目录结构:/backup/{daily.0, daily.1, daily.2, …}
- 每日任务(保留最近 7 天):
- 0 2 * * * /usr/bin/rsync -a --delete /data/ /backup/daily.0/
- 0 2 * * * /usr/bin/ln -snf /backup/daily.0 /backup/current
- 0 3 * * * /usr/bin/rotate_backups.sh 7 /backup/daily
- 系统级镜像与恢复(仅在明确需求时采用)
- 整盘镜像:dd if=/dev/sda of=/backup/sda-$(date +%F).img
- 恢复:dd if=/backup/sda-2025-12-05.img of=/dev/sda
- 注意:镜像级操作风险高,务必先验证备份可用,并在维护窗口执行。