MySQL 备份:Percona XtraBackup※
Percona 出品的物理热备份工具(官方名 Percona XtraBackup,你记的 xtrabackup/xtracback 都是它)。它直接备份 InnoDB 数据文件,不停服(非阻塞),性能远优于 mysqldump / mydumper 逻辑备份,支持增量备份,是生产大库(含 MySQL 主从从库初始化)的首选。
版本:主命令
xtrabackup,版本号随 MySQL(如 Percona XtraBackup 8.0.x);备份前确保 XtraBackup 版本 ≥ 目标 MySQL 版本。
一、全量备份※
# --backup 创建备份(非阻塞)
xtrabackup --backup -u root -p '密码' -H 127.0.0.1 -P3306 \
--target-dir=/data/backup/full
# 大库可并行:--parallel=4
# 压缩备份(zstd 默认 / lz4)
xtrabackup --backup -u root -p '密码' --compress --parallel=4 \
--target-dir=/data/backup/full_compressed
二、准备(prepare)※
备份必须 --prepare 后才能使用(使数据文件一致、回放 redo)。在从库/恢复机执行:
xtrabackup --prepare --target-dir=/data/backup/full
# 压缩备份先解压再 prepare:
xtrabackup --decompress --target-dir=/data/backup/full_compressed
xtrabackup --prepare --target-dir=/data/backup/full_compressed
三、恢复(copy-back)※
# 停止 MySQL、清空/备份数据目录
systemctl stop mysqld
# 拷贝备份回数据目录(目标目录需为空)
xtrabackup --copy-back --target-dir=/data/backup/full
# 空间不足可用 --move-back(移动)
# 修复属主并启动
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld
四、增量备份与恢复※
先有全量,增量基于 LSN(只备自上次备份以来变化的页)。
# 全量基备份
xtrabackup --backup -u root -p '密码' --target-dir=/data/backup/base
# 增量1
xtrabackup --backup -u root -p '密码' --target-dir=/data/backup/inc1 \
--incremental-basedir=/data/backup/base
恢复时依次 prepare 合并增量:
# 先 prepare 全量(apply-log-only 只回放不做全恢复)
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base
# 再逐次合并增量直到最后一份
xtrabackup --prepare --target-dir=/data/backup/base \
--incremental-dir=/data/backup/inc1
# 最后 copy-back 到数据目录恢复
五、主从初始化※
做主从复制从库时,--backup 加 --slave-info 记录源库 binlog 位点(含 GTID),恢复后据此 CHANGE MASTER TO,比 mysqldump 全量再补增量更快更准。
xtrabackup --backup --slave-info --target-dir=/data/backup/slave_backup
# 备份目录里 xtrabackup_binlog_info 记录位点/GTID
对比:mysqldump=逻辑单线程、XtraBackup=物理热备(快、增量)、mydumper=并行逻辑。生产物理备份优先 XtraBackup,逻辑迁移用 mysqldump/mydumper。