1.确保所有的relay log全部更新完毕,在每个从库上执行show processlist
2.更新完毕后,登录所有从库查看master.info文件,对比选择pos最大的作为新的主库
3.然后登录这个新的主库,执行stop slave,进入主目录,删除master.info和relay-log.info
,配置my.cnf文件开启log-bin文件
4..创建用于同步的用户并授权slave
5.登录另外一台从库,执行stop slave停止同步
6.执行start slave
7.修改新的master数据,测试slave是否同步更新
 
 
详细:
1.模拟主故障
service mysql stop
此时,slave1,slave2上show slave status \G都会出现错误
Last_IO_Error: error reconnecting to master'RepUser@192.168.1.100:3307' - retry-time: 60 retries: 1
IO进程和sql进程状态:
Slave_IO_Running: Connecting(该状态表示会一直尝试重连主,如果主正常了,该进程状态会自动变成Yes)
Slave_SQL_Running: Yes
此时,master不能提供读写服务。我们想将其中最新的slave提升为主。
 
2.确保所有的reloa log全部读取完毕
在每个从库上执行stop slave io_thread;show processlist;
直到看到slave has read all relay log;waiting for more updates,则表示从库更新执行完毕,或者show slave status 查看
 
3.选择新的主库
对比选择relay_master_log_fiel,exec_master_log_pos最大的作为新的主库
在每个从库上执行cat /date/master.info (自己路径)选择最大pos 如slave1作为主库
 
4.登录从库,进行相应的配置
登录salva1,执行stop slave,并进入数据库目录,删除master.ino 和relay-log.info(删除前记得备份)
cd /application/mysql/data(自己路径)
rm -f master.info relay-log.info
配置my.cnf文件,开启log-bin,如果log-slaves-updates=1和read-only=1则要注释掉,然后重启slave1;
 
5.reset master
在slave1上reset master,会重新生成二进制日志
然后show master status;
 
6.其它从库操作
登录从库,stop slave
mysql> change master to master_user='RepUser',master_password='beijing',master_host='192.168.80.134',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=154;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
 
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)