通过xtrabackup不停机重做mysql主从
MySQL备份与恢复操作指南
一、环境准备
- 操作系统:CentOS 7
- 数据库版本:Percona Server for MySQL 8.0
二、备份工具安装
- 导入Percona仓库:
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - 安装Percona XtraBackup工具:
yum -y install percona-xtrabackup-80
三、数据备份流程
- 执行全量备份:
注意要给用户backup权限grant BACKUP_ADMIN on *.* to ‘root’@‘%’; flush privileges;xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/tmp/data_full --user=root --password=***** --socket=/var/lib/mysql/mysql.sock--defaults-file:指定配置文件路径,用于读取数据库连接信息。--apply-log:确保备份包含自上次备份以来的所有事务日志。--apply-log-only:仅应用事务日志,不进行实际的数据复制,加快备份速度。--copy-back:将备份文件复制回原始数据目录。--parallel=10:使用10个线程进行数据复制,提高备份效率。--target-dir:指定备份文件存储路径。--datadir:指定MySQL数据存储路径。
- 传输备份文件至目标服务器:
scp -r /tmp/data_full 192.168.1.1:/tmp - 在从库服务器上进行一致性检查:
xtrabackup --prepare --target-dir=/tmp/data_full--prepare:准备备份文件,使其能够用于恢复操作。
- 数据库恢复步骤:
- 确认目标数据库目录为空:
确保目录内无其他文件或子目录。ls -la /data/TDP/mysql/data/ - 确认数据库服务已停止:
如果服务正在运行,使用以下命令停止:systemctl status mysqldsystemctl stop mysqld - 执行恢复操作:
xtrabackup --prepare --target-dir=/tmp/data_full xtrabackup --copy-back --target-dir=/tmp/data_full --datadir=/data/TDP/mysql/data/ - 修复权限:
chown -R mysql.mysql /data/TDP/mysql/data/ - 启动数据库服务:
systemctl start mysqld - 处理常见报错:
- 如果遇到“日志不存在”的错误,可以通过以下命令手动创建日志文件,并赋予mysql用户权限:
touch /var/log/mysqld.log chown mysql.mysql /var/log/mysqld.log - 如果遇到“pid文件错误”,需要根据报错信息将
mysqld.service的配置文件中的PidFile指令修改为正确的pid文件名称。
四、注意事项
- 如果遇到“日志不存在”的错误,可以通过以下命令手动创建日志文件,并赋予mysql用户权限:
- 确认目标数据库目录为空:
- 在执行备份和恢复操作之前,请确保已经备份了所有重要的配置文件。
- 在恢复过程中,数据库服务可能会暂时不可用,请在业务低峰期进行。
- 恢复完成后,建议进行数据库完整性检查,确保数据一致性。

浙公网安备 33010602011771号