备份失败怎么查
备份失败的原因高度集中在几类:目标磁盘写满、账号权限或凭据问题、锁等待超时、网络中断与包大小限制、备份工具与实例版本不匹配。排查顺序建议先看备份日志尾部与退出码,再按报错关键字对号入座,最后才怀疑偶发因素,这样比从现象猜起快得多。
基本信息
| 适用平台 | mysqldump、mydumper、XtraBackup 等备份链路 |
|---|---|
| 首查位置 | 备份日志尾部与脚本退出码 |
| 常见大类 | 空间、权限、锁、网络、版本 |
| 验证手段 | df -h、SHOW PROCESSLIST、产物体积趋势 |
| 兜底要求 | 失败必须有告警,不能只看任务是否执行 |
典型使用场景
- 凌晨备份任务告警,需要在早高峰前定位并补做一次
- 备份一直「成功」但产物体积突然变小,怀疑数据不完整
- 新增表或大表后备份窗口被拉长,开始出现超时失败
- 迁移到新机器后备份账号权限未对齐导致认证失败
- 备份产物上传对象存储失败,需要区分本地生成与远端传输两类问题
报错关键字与处置
| 报错关键字 | 常见原因 | 处置 |
|---|---|---|
| No space left on device | 备份盘写满 | 清理与扩容备份盘,检查轮转与保留策略 |
| Access denied | 账号权限或密码不对 | 核对 GRANT 与 my.cnf 中的凭据 |
| Lock wait timeout exceeded | 锁等待超时 | 避开长事务,检查是否与备份争抢全局锁 |
| Lost connection / 2013 | 网络中断或包过大 | 检查链路并核对 max_allowed_packet |
| Exec format error / unsupported | 工具与实例版本不匹配 | 换成对应版本的工具或升级 |
| Got error 28 / 磁盘类错误 | 临时目录空间不足 | 检查 tmpdir 所在分区余量 |
快速自查命令
快速自查命令
df -h /data/backup # 备份盘与临时目录余量
tail -100 /var/log/mysql_backup.log | grep -iE 'error|fail'
mysql -e "SHOW PROCESSLIST" | head -20 # 长事务与锁等待
mysql -e "SHOW VARIABLES LIKE 'max_allowed_packet'"
ls -lh /data/backup | tail -5 # 产物体积趋势,突变即可疑
echo $? # 脚本退出码,非 0 必须告警备份失败先看日志尾部与退出码,那里通常直接写明是哪一段失败;监控只看任务是否被触发、不看退出码与产物校验的话,失败会被长期静默。
磁盘写满后只在监控层面清理旧文件而不修轮转与保留策略,同样的失败会在下一个周期复发,并且每次都会留下无法使用的截断文件。