目的

复制环境中 master 宕机,提升一台 slave(slave1) 作为新的 master 

演示环境

master  slave1 slave2 slave3

前提条件

所有 slave 都具备如下配置

  •     开启 –log-bin 
  •     关闭 –log-slave-updates (如果 slave 开启了这个参数,会导致在它成为 master 之后,将他收到的 binlog 传给其他 slave )

切换流程

1. 在所有 slave 上执行
    1.1 stop slave io_thread;
    然后查看 SHOW PROCESSLIST 输出,确保提示 Has read all relay log,这时候就可以选新 master 了。
2. 在新主 slave1 上执行
    2.1 stop slave ;
    2.2 reset master ;
3. 在其他从库 slave2 和 slave3 上执行
    3.1 stop slave ; 
    3.2 change master to master_host=’slave1’(还有 user,password,port,不需要指定 MASTER_LOG_FILE 和 MASTER_LOG_POS );
    3.3 start slave ;


4. 老 master 恢复后
    4.1. 将老 master 作为新集群中的slave
        执行 step3,使其成为 slave 。
    4.2 将老 master 重新切换成集群的 master 
        和 slave1 提升为 master 的步骤一致 。