主从故障的手动切换(一主三从)

主从故障手动切换

环境描述

1
master:4核 2G内存 CentOS 6.5 IP:192.168.86.152 主机名:centos65-h1 安装MySQL 5.7.19
2
slave1:4核 2G内存 CentOS 6.5 IP:192.168.86.153 主机名:centos65-h2 安装MySQL 5.7.19
3
slave2:4核 2G内存 CentOS 6.5 IP:192.168.86.154 主机名:centos65-h3 安装MySQL 5.7.19

模拟主库故障

关闭master实例
1
$ service mysqld stop
此时,slave1,slave2上show slave status\G都会发现错误:
1
Last_IO_Error: error reconnecting to master 'repl@192.168.86.152:3306' - retry-time: 60  retries: 1
IO进程和sql进程状态:
1
Slave_IO_Running: Connecting(该状态表示会一直尝试重连主,如果主正常了,该进程状态会自动变成Yes)
2
Slave_SQL_Running: Yes
此时,master不能提供读写服务。我们想将其中最新的slave提升为主。

故障切换步骤

1、确保所有的relay log全部读取完毕
在两个从库上执行:
1
mysql> stop slave io_thread;
2
mysql> show processlist;
直到看到Slave has read all relay log; waitingfor more updates,则表示从库更新都执行完毕了

或者通过show slave status\G查看
1
Slave_SQL_Running_State: Slave has read allrelay log; waiting for more updates

2、选择新的主库
对比选择Relay_Master_Log_File,Exec_Master_Log_Pos最大的作为新的主库,这里我们选择slave1为新的主库 (如果两个从IO进程一直都是正常,没有落后于主,且relay log都已经重放完成,两个从是一样的,选择哪个都可以)

3、进行相应配置
在slave1上,执行:
1
mysql> stop slave;
进入datadir,删除master.info 和 relay-log.info(删除前,可以先备份)
1
$ rm -rf master.info 
2
$ rm -rf relay-log.info
配置my.cnf文件,开启log-bin,如果有log-slaves-updates=1和read-only=1则要注释掉,然后重启slave1或在线修改参数。

4、reset master
在slave1上reset master,重新生成二进制日志。(RESET MASTER将删除所有的二进制日志,创建一个.000001的空日志。如果盲目的在主库上执行这个命令会导致slave找不到master的binlog,造成同步失败。)
1
mysql> reset master;
2
Query OK, 0 rows affected (0.03 sec)
3
4
mysql> show binary logs;
5
+---------------------+-----------+
6
| Log_name            | File_size |
7
+---------------------+-----------+
8
| mysql-server.000001 |       154 |
9
+---------------------+-----------+
10
1 row in set (0.00 sec)

5、在slave1上创建用于同步的用户
1
mysql> grant replication slave on *.* to 'repl'@'192.168.86.%' identified by '123456';

6、重建主从,将slave2指向slave1
1
mysql> change master to master_host='192.168.86.153', master_user='repl', master_password='1233456', master_log_file='mysql-server.000001',master_log_pos=448;
2
Query OK, 0 rows affected, 2 warnings (0.00 sec)
3
4
mysql> start slave;
5
Query OK, 0 rows affected (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值