本篇文章不再赘述 MySQL 主从搭建的过程, 只介绍主从切换的过程
MySQL 的主从切换分成两种情况
- 一种情况是主从高可用, 主从切换后, 原主库还要继续同步原从库的数据
- 另一种情况是一主一从, 主从切换后, 主库下线, 不需要原主库再去同步原从库
第一种情况的主从切换
分别查看主从状态
1 | # slave 中查看从库的状态 |
1 | # master 中查看主库的状态 |
停止从库的 IO_THREAD 线程
先停止 IO_THREAD 线程, 即断开了从主库的 sql 消息接收, 有利于当前数据库完成剩余的数据同步
1 | # slave |
检查是否是如下状态;
1 | Slave_IO_Running: No |
激活从库
在停止 IO_THREAD 线程后, 看到 Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
这个状态后, 就可以操作完全停止从库,并激活为主库啦
1 | mysql> stop slave; # 完全停止 slave 复制 |
将原主库变为从库
1 | # master |
第二种情况的主从切换
第二种情况的主从切换, 切换后, 主库不需要再去同步之前的从库(新主库), 有下线的需求, 这种情况下, 操作流程跟以上差不多, 只不过可以省去如下步骤:
- 从库中不需要执行
reset master
了, 因为原主库(现从库)不要再找点啦(Position) - 主库直接下线就行了, 不需要执行最后把主库变为从库的操作了