
在MySQL中,物理复制备份通常指的是基于文件系统级别的复制,直接复制数据库的数据文件。这种方式比逻辑备份(如mysqldump)更高效,尤其适用于大型数据库。要实现物理复制备份,最常用的方法是使用Percona XtraBackup工具,它是开源的、支持InnoDB和XtraDB存储引擎的热备工具,可以在不锁表的情况下完成备份。
1. 安装XtraBackup工具
Percona XtraBackup不是MySQL自带的,需要单独安装。以CentOS为例:
- yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
- yum install percona-xtrabackup-80
注意:版本号需与你的MySQL版本匹配(例如xtrabackup-80适用于MySQL 8.0)。
2. 执行物理备份
使用xtrabackup命令进行全量备份:
- xtrabackup --backup --target-dir=/data/backup/mysql_full --user=root --password=yourpass
说明:
- --backup:表示执行备份操作。
- --target-dir:指定备份文件保存路径,路径必须为空或不存在。
- 如果MySQL配置了my.cnf中的socket路径,可能需要加上--socket=/var/lib/mysql/mysql.sock。
3. 准备备份数据(Prepared Stage)
物理备份的数据处于“未一致”状态,需要通过“恢复日志”使其成为可还原的一致性备份:
- xtrabackup --prepare --target-dir=/data/backup/mysql_full
这一步会应用redo log,确保所有事务一致。如果是用于搭建复制从库,此步骤必需。
4. 恢复备份到MySQL实例
恢复前需停止MySQL服务,并清空数据目录:
- systemctl stop mysqld
- rm -rf /var/lib/mysql/*
- xtrabackup --copy-back --target-dir=/data/backup/mysql_full
- chown -R mysql:mysql /var/lib/mysql
- systemctl start mysqld
注意:恢复后的文件权限要确保MySQL用户可读写。
基本上就这些。XtraBackup也支持增量备份、压缩备份、加密备份等高级功能,适合生产环境的大规模MySQL物理复制备份需求。关键是备份和恢复过程中要保证一致性,并测试恢复流程的有效性。不复杂但容易忽略细节。










