MySQL数据库集群因故障发生主从切换后,为了保证数据一致性,需要同步在切换后可能产生的数据差异,并恢复主从关系。
所需工具
innobackupex(XtraBackup)
工具安装
该工具在各大Linux公有源中都提供有安装包一键部署。请参考官方说明:
https://www.percona.com/doc/percona-xtrabackup/LATEST/installation.html#installing-percona-xtrabackup-from-repositories
环境说明
两台同版本的MySQL数据库服务器:A和B。原关系为A主(Master)B从(Slave),后发生切换。
数据库默认信息:
配置文件位置:/etc/my.cnf
端口:3306
数据库实例用户名:root
数据库实例密码:password
MySQL运行用户:mysql
数据库存储路径:/mysql/data/
操作步骤
1. 使用innobackupex工具,对B的数据库进行热备至/backup目录:
$ innobackupex --defaults-file=/etc/my.cnf --host=localhost --port=3306 --user=root --password=password /backup
记录下输出日志中
master_log_pos
所对应的同步位置。
2. 使用scp将热备文件从B传至A:
$ scp -r /backup/ root@{A_IP}:/backup/
3. 根据实际需求,更正目录权限:
$ chown -R mysql:mysql /backup/
4. 使用innobackupex工具向A在线导入备份:
$ innobackupex --user=root --apply-log /backup/
$ chown -R mysql:mysql data
#此处“--defaults-file”参数必须位于首位,否则会报错
$ innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /mysql/data/
5. 重启A上的MySQL服务:
6. 重建主从关系(切换后为B主A从):
其中
master_log_file
对应B当前使用的日志文件,
master_log_pos
为第一步中记录的同步位置。
$ mysql -uroot -ppassword
mysql> change master to master_host='{B_IP}',master_port=3306,master_user='root',master_password='password',master_log_file='mysql-master-bin.00000X',master_log_pos=XXXX;
mysql> show slave status \G;
跟踪一段时间,确认数据库同步状态正常即可。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/8409.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
打赏微信支付宝扫一扫,打赏作者吧~
休息一下~~