真出问题时打开备份文件,发现只有几十字节,恢复不了任何数据。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
ls -lh backup.sql mysql -u root -p -e 'CREATE DATABASE verify_tmp' mysql -u root -p verify_tmp < backup.sql
备份任务把错误输出重定向进了文件,或导出命令在锁表阶段就中断了。这一点先确认清楚,后面就不用反复试。
「备份有效性验证」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
具体做法是,检查备份文件体积;实际导入到临时库验证;把校验加入定时流程。
改完照着核一遍,备份文件可完整导入,表数量与线上一致。