mysql主从机制主要是在主机意外情况中断服务(比如断电、宕机等)的情况下,能够将业务转向备机,下面梳理一下整个切换流程:
NOTE:
在当前方案下,没有中间代理层,需要业务手动修改mysql的IP和Port才能切换到备机上去,所以业务需要具有灵活配置Mysql 地址的能力。
1、确认主库短时内无法恢复
如果主库已经无法使用,并且确实短时间内没法恢复正常,则考虑切换备库作为新的主库。
2、停止从库 IO_THREAD 线程
先停止 IO_THREAD 线程, 即断开从主库的 sql 消息接收, 有利于从库完成剩余的数据同步。
#slave
mysql> stop slave IO_THREAD;
mysql> show slave status;
#上面命令检查是否是如下状态,如果是说明io_thread线程已经停止Slave_IO_Running: NoSlave_SQL_Running: Yes
3、确认slave完成所有同步
slave mysql> show processlist;
直到看到状态都为 XXX has read all relay log 表示从库更新均执行完毕,则可以进行下一步。
4、切换从库为主库
mysql> stop slave; # 完全停止 slave 复制
mysql> reset slave all; # 完全清空 slave 复制信息
msyql> reset master; # 清空本机上 master 的位置信息
5、检查新主库可写性
之前配置成从库时,可能配置read_only为1,即不可写,这时候要确认一下新库是否支持写入操作,若不能写入,需要将数据库设为可读写。
mysql> set global read_only=0; #关闭数据库只读属性
# 或者配置文件中置该配置项为0,然后重启mysql
6、通知业务修改相应端口
业务需要修改mysql新地址,所以需要业务代码具有灵活配置能力。