真出问题时打开备份文件,发现只有几十字节,恢复不了任何数据。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

ls -lh backup.sql
mysql -u root -p -e 'CREATE DATABASE verify_tmp'
mysql -u root -p verify_tmp < backup.sql

备份任务把错误输出重定向进了文件,或导出命令在锁表阶段就中断了。这一点先确认清楚,后面就不用反复试。

「备份有效性验证」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

具体做法是,检查备份文件体积;实际导入到临时库验证;把校验加入定时流程。

改完照着核一遍,备份文件可完整导入,表数量与线上一致。

作者 9823189