备份大数据量MySQL应优先用XtraBackup物理热备,不锁表、支持增量与压缩;若用mysqldump需分库分表、限速限条件,避免影响业务。
备份大数据量 MySQL 数据库,核心是避免锁表、减少对业务影响、保障备份一致性,并确保恢复可靠。单纯用 mysqldump 全库导出在百 GB 以上就容易超时、占满磁盘、拖慢线上服务。
Percona XtraBackup 是业界主流的热备工具,支持 InnoDB 在线备份,不锁表、不影响读写。它直接拷贝数据文件,速度远快于逻辑导出,且能做增量备份和流式压缩传输。
xtrabackup --backup --target-dir=/path/backup/ 即可启动全量备份innodb_file_per_table,便于后续按表恢复--stream=xbstream --compress 实时压缩,节省空间和时间xtrabackup --prepare 回滚未提交事务,才能用于恢复若必须用 mysqldump(如跨版本迁移、需兼容其他数据库),不能直接 dump 整库。应拆解为小单元,配合参数降低压力:
--databases db1 db2 分批导出,避免单次耗时过长--where="id > 1000000 AND id 分片导出,再拼接 SQL
--single-transaction(仅对 InnoDB 有效)保证一致性,避免锁表--skip-triggers --skip-routines --skip-even
ts 减少元数据开销备份文件不是“存上就完事”,没验证的备份等于没备份:
gunzip -t backup.sql.gz 或 xtrabackup --validate 检查完整性CHECKSUM TABLE 对比源库校验值SHOW MASTER STATUS 输出)和时间戳,为 PITR(基于时间点恢复)留依据人工执行易遗漏、难追溯。应纳入运维体系:
不复杂但容易忽略:备份不是一次性动作,而是持续验证的闭环。从工具选型、分片策略、完整性校验到自动恢复演练,每环都决定故障时能否真正“救回来”。