可靠的备份需通过还原演练验证,而非仅校验命令;应定期在隔离环境执行完整还原流程,并用mysqlcheck检查表状态、sha256sum校验文件完整性、SELECT COUNT(*)与CHECKSUM TABLE比对关键表数据。
用 mysqlcheck 验证备份恢复后的库表结构是否正常
仅解压或拷贝备份文件不等于备份可用。必须还原到测试实例后,用 mysqlcheck 检查表状态。它能快速识别 crashed、incorrect key file 等常见损坏信号。
- 先还原备份(如用
mysql命令导入 SQL 文件,或用xtrabackup --copy-back) - 执行:
mysqlcheck -u root -p --all-databases --check - 加
--extended可触发完整行扫描,但会显著延长耗时,生产环境慎用 - 若某张表报
error : Table is marked as crashed,说明备份本身已损坏或还原过程出错
用 sha256sum 校验物理备份文件传输/存储是否完整
对于 mysqldump 生成的 SQL 文件或 xtrabackup 的全量目录,文件级哈希校验是第一道防线。它无法验证逻辑一致性,但能立刻发现磁盘坏道、网络中断、误删截断等问题。
- 备份完成后立即计算并保存哈希:
sha256sum /backup/full_20240501.xb > /backup/full_20240501.sha256 - 校验时运行:
sha256sum -c /backup/full_20240501.sha256 - 注意:不要对正在写入的备份文件实时计算哈希,可能读到不完整状态
- 云存储(如 S3)上传后务必重新下载并校验,避免服务端静默损坏
用 SELECT COUNT(*) + CHECKSUM TABLE 快速比对关键表数据量与校验和
适用于中等规模且主键连续的业务表。它不替代逻辑备份验证,但能低成本发现大范围数据丢失或截断。