12
2024
11
23:04:07

MySQL集群主从切换后的数据同步及恢复主从关系流程

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/
#移除A上的原数据库文件(可以先备份)
$ cd /mysql/
$ mv data data_old
$ mkdir data
$ chown -R mysql:mysql data
#导入数据库
#此处“--defaults-file”参数必须位于首位,否则会报错
$ innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /mysql/data/

5. 重启A上的MySQL服务:

$ service mysqld stop
$ service mysqld start

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> start slave;
mysql> show slave status \G;

跟踪一段时间,确认数据库同步状态正常即可。


— END —






推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/8409.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: