mysql故障切换_Mysql 手动故障切换

本文档详细介绍了在1主2从的MySQL环境中,当主库宕机时如何进行手动故障切换和修复。通过模拟主库崩溃,选择新的主库并调整相关配置,以及处理数据不一致问题,确保系统的正常运行。
摘要由CSDN通过智能技术生成

模拟1主2从环境,主库宕机情况下的手动切换和修复

环境准备:

3台redhat6.3单颗CPU,2G内存操作系统

master:192.168.233.2

slave1:192.168.233.3

slave2:192.168.233.4

mysqlpercona-server5.7.19

同步方式为半同步(GTID)

模拟主库崩溃场景:

杀掉mysql进程

ps –ef|grep mysql

bab1f8deba846fac610cac1650eb0630.png

killall -9 mysqld mysqld_safe

683c20c195e13fdf160e8289c499d794.png

查看从库复制状态:

Slave_IO_Running->Connecting

f55a099ac0aaab5becde951282e50f2a.png

确认两节点状态都处于slave has read all relay log;wait for more updates

0f5e3b9f4d773822c4a8a9300b6dcf8c.png

选择192.168.233.3为新的主库:

执行reset master;--作用是清空bin log日志,并创建一个新的binlog

77a9ec481312a15d14b2f53abd444693.png

执行reset slave --作用是清除slave_master_info和slave_relay_log_info信息,清空relay log。

4c4269566735ce04b6d312201c647138.png

创建新主库到旧主库的复制账号:

grant replication slave on *.* to repl@'192.168.233.2 ' identified by ‘123456’;

efabf4d11cf035b42d0a4b9af085331a.png

130d0fef9ad9c2fd6557a8d0aa01a33b.png

更改新主库的参数:(报找不到参数看最后)

set global rpl_semi_sync_master_enabled=1;

set global rpl_semi_sync_slave_enabled=0;

set global read_only=0;

cb33bbfa26ca914ba2be05649ea27574.png

在slave2上(192.168.233.4)执行切换主库操作:

stop slave;

change master to master_host='192.168.233.3',master_user='repl',master_password='123456',master_port=3306,master_auto_position=1;

start slave;

ba6392e6331619fcfaf9c2d1d7ebd901.png

恢复旧主库,并使其成为新的备库:

/etc/init.d/mysqldstart启动mysqld服务

1e212275971f6494d4784e47df1bc34f.png

更改旧主库的参数为备库参数:

set global rpl_semi_sync_master_enabled=0;

set global rpl_semi_sync_slave_enabled=1;

set global read_only=1;

切换主库为192.168.233.3,开启复制

change master to master_host='192.168.233.3',master_user='repl',master_password='123456',master_port=3306,master_auto_position=1;

start slave;

aa95947b53d851eaad476a755bd8c3a2.png

--至此切换结束

执行过程中如果报找不到半同步相关参数的,按以下步骤安装插件:

在主库安装semisync_master插件:

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

mysql>set global rpl_semi_sync_master_enabled=1;

在备库安装semisync_slave插件

mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

mysql>set global rpl_semi_sync_slave_enabled=1;

在从库状态并不是slave has read all relay log;wait for more updates时关闭复制会导致

部分transaction未执行成功,数据不一致的导致start slave报错:

7a8454ab38ff0ac2bca4952917d37c94.png

由报错可知,执行失败的GTID编号: fafb3b40-40cb-11e8-85d9-000c29057f3c:1。

解决方法:

1.跳过这条事务

(1)停止slave进程

mysql>STOP SLAVE;

(2)设置事务号,事务号从Retrieved_Gtid_Set获取

在session里设置gtid_next,即跳过这个GTID

mysql>SET @@SESSION.GTID_NEXT= '216d7609-3e41-11e8-9481-000c292618fc:1,fafb3b40-40cb-11e8-85d9-000c29057f3c:1'

(3)设置空事物

mysql>BEGIN; COMMIT;

(4)恢复事物号

mysql>SET SESSION GTID_NEXT = AUTOMATIC;

(5)启动slave进程

mysql>START SLAVE;

2.清除这条事务

(1)停止slave进程

stop slave;

(2)设置gtid_purged

set global gtid_purged='216d7609-3e41-11e8-9481-000c292618fc:1,fafb3b40-40cb-11e8-85d9-000c29057f3c:1';

(3)设置空事物

mysql>BEGIN; COMMIT;

(4)启动slave进程

start slave;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值