percona-xtrabackup恢复mysql主从同步

文章目录

      • 1. 查看`mysql`版本
      • 2. 查看服务器版本
      • 3. 下载`percona-xtrabackup`
      • 4. 全量备份
      • 5. 预处理
      • 6. scp到从库
      • 7. 关闭从库并清空从库数据和日志信息
      • 8. 在从库上恢复数据
      • 9. 修改权限
      • 10. 查看master位置
      • 11. 从库执行同步

在项目上出现了主从数据不同步问题,因为数据差别很大,所以采用重做主从同步。第一次使用mysql自带的工具,mysqldump备份数据,然后再导入从库,由于数据量比较大150G,造成导入效果比较差,耗时8个小时未处理完,所以采用下面这种方式处理,性能极高,不到2个小时处理完毕,而且该方式是热备份,不需要锁库锁表,比较适合现场环境,推荐使用该方式(麻烦的地方需要安装软件),所以记录操作步骤。由于是项目上,所以操作步骤未截图。

1. 查看mysql版本

输入如下命令,回车,再输入mysql密码,即可查看mysql的版本。

mysql -uroot -p

mysql的版本为:5.7.20-log

2. 查看服务器版本

通过如下命令:

cat /etc/redhat-release

服务器版本为:CentOS Linux release 7.4.1708 (Core)

3. 下载percona-xtrabackup

通过如下命令下载:

官网路径:https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/\
binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

注意:
percona-xtrabackup在官网最新版本是8.08.0版本只支持mysql8.0percona8.0
早于mysql8.0的版本需要使用xtrabackup 2.4版本备份和恢复,因此我们上次选择的是2.4.4版本。
2.4版本的官网文档地址:https://www.percona.com/doc/percona-xtrabackup/2.4/index.html

通过如下命令安

yum localinstall -y percona-xtrabackup-80-8.0.5-1.el7.x86_64.rpm

4. 全量备份

innobackupex --defaults-file=${my.cnf} --user=${user} --password=${password} /opt

其中my.cnf为配置文件地址,user和password变量为数据库账号和密码,/opt为备份存储目录。

5. 预处理

innobackupex --user=${user} --password=${password} --apply-log /opt/2019-07-16_16-38-13

其中user和password变量为,数据库账号和密码,/opt/2019-07-16_16-38-13为备份存储目录。

6. scp到从库

scp -r /opt/2019-07-16_16-38-13 [email protected]:/opt

7. 关闭从库并清空从库数据和日志信息

systemctl stop mysqld
rm -rf ${dataPath}

dataPath为数据库数据所在目录的文件

8. 在从库上恢复数据

innobackupex --user=${user} --password=${password} --copy-back /opt/2019-07-16_16-38-13

其中user和password变量为,数据库账号和密码,/opt/2019-07-16_16-38-13为备份存储目录。

9. 修改权限

chmod -R 777 ${dataPath}

dataPath为数据库数据所在目录的文件

10. 查看master位置

cat /opt/2019-07-16_16-38-13/xtrabackup_binlog_info

结果如下:

mysql-bin.000468	742632435

11. 从库执行同步

打开mysql命令客户端,执行如下sql语句

change master to master_host=${host}, master_user=${user}, master_password=${password}, master_log_file='mysql-bin.000468',master_log_pos=742632435

其中host为主库ipuserpassword为主库账号密码,master_log_filemaster_log_pos取第10步,获取到的值。

启动从库复制,执行如下sql语句

start slave;

经过以上步骤,即恢复mysql主从同步

你可能感兴趣的:(数据库)