MySQL主从切换
基于传统主从切换:
当主宕机之后,
方法一:
1、所有从上IO线程都会因为主宕机中断,此时,停止SLAVE IO_THREAD,等待SQL线程将relay log中的事件执行完成;
2、选择Read_Master_Log_Pos和Exec_Master_Log_Pos最大的那个slave提升为新的master;
3、查看每个slave上的二进制最后的位置(查看事件时间来查找能快一点),比如为CPOS,截取新master的二进制日志从CPOS以后的日志,并导入到slave中,以求数据的一致性;


MySQL主从切换_第1张图片
4、在新master上SHOW MASTER STATUS记录新master的logfile和logpos;
5、在所有slave上change master指向新的master即可
方法二(推荐):
1、所有从上IO线程都会因为主宕机中断,此时,停止SLAVE IO_THREAD,等待SQL线程将relay log中的事件执行完成;
2、选择Read_Master_Log_Pos和Exec_Master_Log_Pos最大的那个slave提升为新的master;
3、查看每个slave上的二进制最后的位置(查看事件时间来查找能快一点),比如为CPOS,找出新master的二进制日志从CPOS以后的日志;
4、直接change master to指向这个日志的位置,即可开始复制;
MySQL主从切换_第2张图片

方法三(推荐):
MySQL主从切换
具体如下:
MySQL主从切换_第3张图片

基于GTID复制主从切换:

复制出现的问题:
MySQL主从切换_第4张图片

MySQL主从切换_第5张图片

MySQL主从切换_第6张图片