第一种情况:主机宕机SSH正常连接binlog数据没丢,
提升S1为M1的操作
1.如果做了双主同步,直接切主库即可,啥都不用做
2.如果没有做双主
1.要把主库的binlog补全到所有的从库
2.调整配置文件,去掉read-only,授权用户权限检查,确认是否开启binlog,
3.删除master.info relay-log*
4.登陆数据库 stop slave; reset master;
5.所有从库stop slave io_therad; change master to master_host='10.10.10.190',master_user='repl',master_password='111111',master_log_file='mysql-bin.000005', master_log_pos=681;
如果
6.重启数据库,提升S1为M1完毕M1 S2 S3 S4 S5
第二种情况:主机宕机SSH连接不上,
1.半同步从库S1提升为M
1.把半同步数据补全所有从库 S2 S3 S4 S5
2.登陆数据库 stop slave; reset master;
3.删除master.info relay-log*
4.检查mysql授权表:web用户权限以及从库同步的权限
5.调整配置文件,去掉read-only,授权用户权限检查,确认是否开启binlog,
6.所有从库stop slave io_therad; change master to master_host='10.10.10.190',master_user='repl',master_password='111111',master_log_file='mysql-bin.000005', master_log_pos=681;
7.重启数据库,提升S1为M1完毕M1 S2 S3 S4 S5
2.S1什么都不干只做同步的从库
1.把S1数据补全所有从库 S2 S3 S4 S5
2.调整配置文件,去掉read-only,授权用户权限检查,确认是否开启binlog,
3.删除master.info relay-log*
4.登陆数据库 stop slave; reset master;
5.所有从库stop slave io_therad; change master to master_host='10.10.10.190',master_user='repl',master_password='111111',master_log_file='mysql-bin.000005', master_log_pos=681;
6.重启数据库,提升S1为M1完毕M1 S2 S3 S4 S5
3.M挂掉以后,从S中人工选一个(耽误事,容易造成数据不一致)
1.所有从库执行 show processlit;
确定IO线程 Slave has read all relay log
Reconnecting after a failed master event read # 主库挂掉的状态
Waiting for master to send event # 代表主库所有binlog都发送完毕
Slave has read all relay log; waiting for the slave I/O thread to update it | NULL
查看所有从库的master.info
[root@test01 /data/3307/data]# cat master.info
18
mysql-bin.000007
5843 # 从这里可以看到已经同步到的位置点,以及哪个是数据最全的从库
从而来确认,选择哪一个从库来作为新的M
2.把选中的S数据补全所有从库
3.调整配置文件,去掉read-only,授权用户权限检查,确认是否开启binlog,
4.删除master.info relay-log*
4.登陆数据库 stop slave; reset master;
6.所有从库stop slave io_therad; change master to master_host='10.10.10.190',master_user='repl',master_password='111111',master_log_file='mysql-bin.000005', master_log_pos=681;
7.重启数据库,提升S为M1完毕M1
8.通过replay日志补全所有其他从库和当前为主的数据库一直