文字
分享

### # 主库master宕机

登录从库show processlist查看两个线程的更新状态

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

mysql> show processlist\G

*************************** 1. row ***************************

     Id: 6

   User: rep

   Host: 192.168.0.200:45738

     db: NULL

Command: Binlog Dump

   Time: 102

  State: Master has sent all binlog to slave; waiting for binlog to be updated

   Info: NULL

*************************** 2. row ***************************

     Id: 7

   User: root

   Host: localhost

     db: NULL

Command: Query

   Time: 0

  State: NULL

   Info: show processlist

查看其它从库的master.info文件的同步情况

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# cat /usr/local/mysql/data/3307/data/master.info

# cat /usr/local/mysql/data/3308/data/master.info

 

18

mysql-bin.000001

423

192.168.0.200

rep

reppasswd

3306

60

0

0

1800.000

0

确保更新完毕,看看几个从库中那个最快,经过测试没有延迟的情况POS点差距很小,甚至是一致的。(确保从库和主库的一致性更高,数据丢失更少,选择将同步最快的提升为主库)

  1. 确保所有relay log全部更新完毕
    在每个从库执行 stop slave io_thread;show processlist;直到看到Has read all relay log;表示从库的更新都执行完毕。

  2. 登录选定好的从库例端口3307 执行stop slave;reset master;

  3. 进入到选定的从库数据库端口3307文件目录删除master.inforelay-log.info,检查授权表,read-only参数

  4. 3307端口提升从库为主库
    vim /usr/local/mysql/data/3307/my.cnf
    开启log-bin = /usr/local/mysql/data/3307/mysql-bin
    另外:如果存在log-slave-updatesread-only等参数一定要注释掉,然后重启mysql服务器。