使用xtrabackup工具备份整个mysql服务器,需要按照规范的操作流程执行,既能保证备份数据的完整性,也不会对线上业务造成过大影响。xtrabackup支持mysql、mariadb等数据库的物理备份,备份效率远高于逻辑备份工具,是生产环境常用的备份方案。

环境准备
在开始备份前,需要完成以下准备工作:
- 确认mysql服务器处于运行状态,且数据目录路径已知,默认路径为
/var/lib/mysql - 安装xtrabackup工具,不同mysql版本对应不同的xtrabackup版本,mysql8.0以上需要安装xtrabackup8.0版本
- 准备备份文件存储目录,建议单独挂载磁盘,避免占用系统盘空间
- 确保执行备份的用户拥有mysql数据目录的读取权限,以及备份目录的写入权限
xtrabackup安装示例(centos系统)
如果是mysql8.0版本,安装命令如下:
# 下载xtrabackup8.0的rpm包 wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.33/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.33-27.1.el7.x86_64.rpm # 安装rpm包 yum localinstall percona-xtrabackup-80-8.0.33-27.1.el7.x86_64.rpm -y # 验证安装是否成功 xtrabackup --version
执行全量备份整个mysql服务器
xtrabackup全量备份会复制整个mysql服务器的数据文件、日志文件等所有相关文件,完整备份整个服务器实例。
备份命令参数说明
| 参数 | 作用说明 |
|---|---|
| --backup | 指定执行备份操作 |
| --target-dir | 指定备份文件存储的目录 |
| --user | 连接mysql的用户名 |
| --password | 连接mysql的密码 |
| --socket | mysql的socket文件路径,本地连接时使用 |
完整备份命令示例
假设mysql的socket路径为/tmp/mysql.sock,备份目录为/data/mysql_backup/full_20240101,执行以下命令:
xtrabackup --backup --target-dir=/data/mysql_backup/full_20240101 --user=root --password=your_mysql_password --socket=/tmp/mysql.sock
备份执行完成后,会输出completed OK!的提示,此时备份目录下会生成所有mysql服务器的数据文件。
备份后处理与验证
备份完成后,需要执行准备操作,让备份数据处于一致状态,同时可以验证备份文件的完整性。
准备备份数据
使用--prepare参数处理备份文件,回滚未提交的事务,保证数据一致性:
xtrabackup --prepare --target-dir=/data/mysql_backup/full_20240101
验证备份完整性
可以通过查看备份目录下的xtrabackup_checkpoints文件,确认备份的类型和状态:
cat /data/mysql_backup/full_20240101/xtrabackup_checkpoints
正常输出内容类似如下,说明备份完整有效:
backup_type = full-backuped from_lsn = 0 to_lsn = 12345678 last_lsn = 12345678 flushed_lsn = 12345678
从备份恢复整个mysql服务器
当需要恢复整个mysql服务器时,按照以下步骤操作:
- 停止mysql服务:
systemctl stop mysqld - 清空原有mysql数据目录,或者将数据目录重命名备份
- 执行恢复命令,将备份文件复制到mysql数据目录
- 修改数据目录权限为mysql用户所有
- 启动mysql服务
恢复命令示例
# 停止mysql服务 systemctl stop mysqld # 清空原有数据目录,先备份原有数据 mv /var/lib/mysql /var/lib/mysql_old mkdir -p /var/lib/mysql # 执行恢复 xtrabackup --move-back --target-dir=/data/mysql_backup/full_20240101 --datadir=/var/lib/mysql # 修改权限 chown -R mysql:mysql /var/lib/mysql # 启动mysql服务 systemctl start mysqld
恢复完成后,登录mysql验证数据是否完整,确认整个服务器恢复成功。
注意事项
- 备份过程中不要修改mysql数据目录的文件,避免备份数据损坏
- 定期测试备份文件的恢复流程,确保备份可用
- 生产环境建议结合增量备份,减少备份占用的存储空间
- 备份完成后及时将备份文件转移到异地存储,避免本地磁盘故障导致备份丢失
mysqlxtrabackup数据库备份全量备份修改时间:2026-07-23 05:00:24