MySQL主备切换主要包括以下几个步骤:
- 备份Master数据
在进行主备切换前,最好先将Master的数据进行备份,以防万一。
可以使用mysqldump等工具进行完整备份。 - 将Slave设为独立状态
在Master健康的情况下,需要将Slave设为独立状态,避免继续同步Master的数据。
操作为:
STOP SLAVE;
SET GLOBAL read_only = 0;
- 更新Slave的binlog位置
使用MASTER_LOG_FILE和 MASTER_LOG_POS这样的信息,更新Slave复制位置。 - 将Slave设为Master状态
需要改动Slave的一些配置,把它设置为能够接受连接和写入操作的Master。
操作为:
RESET MASTER;
SET GLOBAL read_only=0;
- 更新所有应用,指向新的Master
所有连接到旧Master数据库的应用程序,需要指向新的Master(即Slave)。 - 旧Master转为Slave
执行完上述步骤后,旧的Master数据库可以转为新Master(即原Slave)的Slave。
主要操作为:
CHANGE MASTER TO ...;
START SLAVE;
- 监控Master和Slave
监控两者的IO延迟和SQL线程延迟,确认两者数据保持正确同步。
主备切换的关键是第一步做好Master数据的备份,其余步骤均为配置操作。