上周二凌晨3点,我盯着屏幕上那条血红色的告警短信,手都在抖。
“数据目录 /data/mysql 访问超时,备份进程已中止”——这是我今年第2次被备份策略坑。上一次是误删了生产库的归档日志,恢复花了6个小时,老板在群里发了个“?”。这次更狠,备份脚本自己把自己跑死了,因为磁盘满了——备份文件占满了备份盘,然后备份进程写不了日志,直接崩溃。死循环,完美闭环。
我蹲在机房里,脚边是第3罐红牛,脑子里只有一个念头:这破策略必须改。
先说下之前的方案。我用的是 rsync + crontab 那套老路子,每天凌晨2点全量同步到另一台 NAS。听起来挺靠谱对吧?问题出在几个细节上。第一,rsync 是增量同步没错,但它不会自动清理旧版本。第二,NAS 那块 4TB 的盘,我天真地以为够用——结果项目上线后每天产生 300GB 的数据库增量,加上日志文件,2周就把盘撑爆了。第三,我的备份脚本里没做磁盘空间检测,它只管闷头写,写到报错为止。
第1次崩的时候,我加了条清理命令,每天删掉7天前的备份。然后第2次崩就是上周二——删除命令跑得比写入慢,磁盘还是在涨,最后炸了。
所以这次我重新设计了备份策略。不绕弯子,直接说现在运行的这套方案。
核心思路是分层:热备份、温备份、冷备份,三层独立互不干扰。
热备份走的是 ZFS 快照。数据库服务器是 Ubuntu 22.04,ZFS 版本 2.1.5。每15分钟打一个快照,保留最近2小时。命令很简单:
“`
zfs snapshot tank/data@$(date +%Y%m%d%H%M%S)
zfs destroy tank/data@$(date -d ‘-2 hours’ +%Y%m%d%H%M%S)
“`
但这里有个坑。ZFS 快照是瞬间完成的,但如果你不设定期清理,快照元数据会占用大量内存。我最初保留24小时的快照,结果 arc 命中率从95%掉到70%,查询慢了一倍。后来改成2小时,内存压力直接消失。
温备份用的是 BorgBackup,版本 1.2.0。这玩意儿比 rsync 聪明太多了。它支持去重,第一次全量,后面只存差异块,而且自动压缩。我开了 LZ4 压缩,速度飞快,CPU 占用不到5%。每天凌晨3点跑一次,备份到同机房另一台服务器。
命令配置大致这样:
“`
borg create –compression lz4 /backup/repo::{hostname}-{now:%Y-%m-%d} /data
borg prune –keep-daily 7 –keep-weekly 4 –keep-monthly 3 /backup/repo
“`
prune 参数是关键,它会自动按策略删除旧版本。7天日备份、4周周备份、3个月月备份。磁盘占用从一开始的 2TB 降到 400GB,而且恢复速度比 rsync 快——因为 borg 可以只恢复某个时间点的某个目录,不用全量拉。
冷备份最土,但最稳。每周日晚上,用 rsync 把温备份的 repo 同步到对象存储。我用的 Backblaze B2,成本低,1TB 一个月才 5 美元。脚本里加了个重试机制,最多重试3次,每次间隔10分钟,防止网络抖动失败。
“`
rsync -avz –bwlimit=50000 /backup/repo/ b2:mybucket/backup/
“`
带宽限制到 50Mbps,不影响白天的业务流量。
这三层跑下来2个月了,没出过一次问题。上周有人误删了一张表,我从温备份里捞回来,耗时7分钟。老板路过看了一眼,说“这次挺快啊”,然后走了。
踩坑经验总结3条。
第一,备份脚本一定要做磁盘空间检测。我现在的脚本开头先跑一行 df,如果使用率超过85%,就直接发告警并退出,不执行任何写操作。宁可漏一次备份,也别把盘写爆。
第二,恢复流程要定期演练。我以前以为备份了就行了,结果真到恢复的时候才发现,rsync 的 –delete 选项没配好,恢复出来的数据比源库多了一堆垃圾文件。现在每月第一个周六凌晨,我会手动触发一次恢复测试,跑个自动化脚本来校验数据完整性。
第三,监控要覆盖备份本身。之前备份失败了我都不知道,直到第二天发现数据对不上。现在 Prometheus 接了个 exporter,专门监控 borg 和 rsync 的退出码,失败就告警到钉钉群。阈值设成连续2次失败才报警,避免网络抖动误报。
备份这事儿,说白了就是个“你以为稳了,其实随时会炸”的活。别信什么“rsync 用了10年没出过问题”这种话,那是没遇到磁盘写满、文件系统锁死、权限变更这些坑。每层都留个后手,每份数据都至少存3份,才是正经。
现在凌晨4点,我看了眼监控面板,热快照15分钟前刚打完,温备份跑了98%进度,冷备份还有5小时。一切正常。可以睡觉了。
📎 延伸阅读
看完这篇,如果你想:
- 直接拿工具 → 回复”13“,我把跨境获客工具包发给你
- 系统学习 → 点击菜单”AI训练营”,从0开始跑通AI变现