xtrabackup是mysql物理备份主流工具,适合50gb以上生产库,支持热备、增量、压缩和加密;需严格匹配mysql版本、配置权限并执行prepare确保一致性。

MySQL 物理备份用 XtraBackup 是主流选择,尤其适合 50GB 以上生产库。它支持热备、增量、压缩和加密,不锁表、不影响业务,但必须注意版本匹配、权限配置和一致性处理三个硬性前提。
安装与版本对齐
XtraBackup 不是 MySQL 自带组件,需单独安装,且版本必须严格匹配 MySQL:
- MySQL 8.0.x → 安装 percona-xtrabackup-80(如 8.0.35)
- MySQL 5.7 → 安装 percona-xtrabackup-24
- CentOS/RHEL 系统需提前装依赖:
yum install perl perl-DBD-MySQL libaio-devel - 验证安装:
xtrabackup --version,输出应包含对应 MySQL 版本标识
全量备份执行要点
一条命令完成备份,但参数和环境缺一不可:
- 确保 mysqld 正在运行,且
mysql -u root -p可连通 -
--target-dir必须是**空目录**,xtrabackup 不自动创建父路径,需先mkdir -p /backup/full_$(date +%F) - 常用命令示例:
xtrabackup --backup --target-dir=/backup/full_20260707 --user=root --password=xxx --socket=/var/lib/mysql/mysql.sock - 若 MySQL 使用非默认 socket(如容器或自定义路径),
--socket参数不能省略 - 备份完成后,检查目录下是否存在
xtrabackup_binlog_info和xtrabackup_checkpoints文件,确认 binlog 位点和 LSN 已记录
备份后必须 prepare
刚生成的备份是“不一致”的——因为备份过程中事务仍在写入。跳过 prepare 直接恢复会导致启动失败:
- 立即执行:
xtrabackup --prepare --target-dir=/backup/full_20260707 - 该过程重放 redo log、回滚未提交事务,使备份达到一致性状态
- 生产环境建议加
--use-memory=2G(设为物理内存的 25%~50%),避免卡顿或 OOM - prepare 可重复执行,即使中断也不破坏备份文件,适合分阶段操作
恢复到实例的规范流程
恢复不是复制粘贴,而是三步闭环操作:
- 停服务:
systemctl stop mysqld(或kill -15mysqld 进程) - 清空并还原:
rm -rf /var/lib/mysql/*xtrabackup --copy-back --target-dir=/backup/full_20260707 - 修权限:
chown -R mysql:mysql /var/lib/mysql(必须用 MySQL 实际运行用户) - 删 auto.cnf:
rm -f /var/lib/mysql/auto.cnf(避免 server_uuid 冲突,尤其用于搭建从库时) - 启服务:
systemctl start mysqld,登录后执行SELECT @@server_uuid, @@gtid_executed;验证一致性











