文档首页> 技术教程> XtraBackup 物理备份入门

XtraBackup 物理备份入门

发布时间:2026-01-09 14:29        更新时间:2026-01-09 21:24
数据量上了几十上百 GB,mysqldump 一跑几个小时,恢复更要按天算。XtraBackup 是开源的 InnoDB 物理备份工具,直接备份数据文件,速度按磁盘能力算,还支持增量,大库备份基本都靠它。 ## 一、和逻辑备份差在哪 mysqldump 导出的是 SQL 文本,跨版本兼容好,但速度慢、恢复更慢。XtraBackup 拷的是数据页文件,备份期间不阻塞业务读写,代价是版本要求严格:8.0 做的备份不能恢复到 5.7,主备两边版本要保持一致。工具版本一般要不低于数据库版本,反过来不行。安装后得到 xtrabackup 和 xbstream 两个命令,具体包名以官方仓库为准。增量备份的价值在时间:全量耗时随数据量线性涨,增量只备变化页,日常备份窗口能压到全量的零头。备份目录放在独立数据盘上,和数据库文件分开。 ## 二、全量加增量 周日做全量: ``` xtrabackup --backup --target-dir=/backup/full --user=root --password='xxx' ``` 之后每天做增量,以上一次备份为基准: ``` xtrabackup --backup --target-dir=/backup/inc_mon \ --incremental-basedir=/backup/full --user=root --password='xxx' ``` 增量只记录变化的数据页,几十 GB 的库里一天的变化可能只有几百 MB,速度和空间都省下来。备份账号单独建,授予所需最低权限,别拿 root 跑定时任务;备份目录里放一个说明文件,记录全量与增量的基准关系,恢复的人不用猜。 ## 三、恢复步骤概览 恢复前先按顺序合并,全量在前,增量按时间依次: ``` xtrabackup --prepare --apply-log-only --target-dir=/backup/full xtrabackup --prepare --apply-log-only --target-dir=/backup/full --incremental-dir=/backup/inc_mon xtrabackup --prepare --target-dir=/backup/full ``` 最后一次 prepare 不带 --apply-log-only,让未完成事务正常回滚收尾。然后停库、拷回数据目录: ``` systemctl stop mysqld xtrabackup --copy-back --target-dir=/backup/full chown -R mysql:mysql /var/lib/mysql systemctl start mysqld ``` 拷回前确认磁盘空间够放一份完整数据,恢复到一半因为空间不足失败,比不恢复更折腾。启动后看 error.log 有无报错,再抽查业务数据。恢复演练和备份同等重要,每月把最近的全量加增量在临时实例上完整走一遍,记录留档。 物理备份和逻辑备份不冲突。稳妥的组合是:定期物理全量加每日增量,binlog 连续保留,恢复时间能压到分钟级。选哪种,先算清楚业务能接受多久的恢复时间。