mysql5.7主從切換(master/slave switchover)

本文源自:https://www.cnblogs.com/ctypyb2002/p/9793012.html

切換前 
192.168.56.100 master 
192.168.56.200 slave

切換後 
192.168.56.100 slave 
192.168.56.200 master

MySQL [(none)]> select version();
+------------+
| version()  |
+------------+
| 5.7.21-log |
+------------+
1 row in set (0.01 sec)

master上執行 192.168.56.100

# /etc/init.d/mysql.server stop
MySQL server PID file could not be found!                  [  OK  ]

slave上執行 192.168.56.200

MySQL [(none)]> stop slave io_thread;
MySQL [(none)]> show processlist\G
*************************** 1. row ***************************
     Id: 4
   User: root
   Host: localhost
     db: NULL
Command: Query
   Time: 0
  State: starting
   Info: show processlist
*************************** 2. row ***************************
     Id: 9
   User: system user
   Host: 
     db: NULL
Command: Connect
   Time: 167
  State: Slave has read all relay log; waiting for more updates
   Info: NULL
2 rows in set (0.00 sec)

一定要確保出現 Slave has read all relay log,才能繼續往下運行

MySQL [(none)]> stop slave;
MySQL [(none)]> reset master;
MySQL [(none)]> create user 'replicator'@'192.168.56.%' identified by 'mysqlmysql';
MySQL [(none)]> grant replication slave on *.* to 'replicator'@'192.168.56.%';
MySQL [(none)]> flush privileges;
MySQL [(none)]> show processlist;
+----+------+-----------+------+---------+------+----------+------------------+
| Id | User | Host      | db   | Command | Time | State    | Info             |
+----+------+-----------+------+---------+------+----------+------------------+
|  4 | root | localhost | NULL | Query   |    0 | starting | show processlist |
+----+------+-----------+------+---------+------+----------+------------------+
1 row in set (0.00 sec)

刪除服務器上的master.info和relay-log.info文件,否則下次重啓時還會按照從庫啓動。

# cd /var/lib/mysql/
# rm -f master.info relay-log.info

新的slave上執行 192.168.56.100

現在需要把老的master變爲一個新的slave

MySQL [(none)]> change master to
  master_host='192.168.56.200',
  master_user='replicator',
  master_password='mysqlmysql',
  master_port=3306,
  master_log_file='mysql-bin.000001',
  master_log_pos=1194;

MySQL [(none)]> start slave;
MySQL [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.56.200
                  Master_User: replicator
                  Master_Port: 3306
                Connect_Retry: 
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 1194
               Relay_Log_File: mysql-relay-bin.000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
`
`
`

確保Slave_IO_Running,Slave_SQL_Running均爲Yes

新的master上執行 192.168.56.200

MySQL [(none)]> show processlist\G
*************************** 1. row ***************************
     Id: 5
   User: root
   Host: localhost
     db: NULL
Command: Query
   Time: 0
  State: starting
   Info: show processlist
*************************** 2. row ***************************
     Id: 7
   User: replicator
   Host: 192.168.56.100:44070
     db: NULL
Command: Binlog Dump
   Time: 206
  State: Master has sent all binlog to slave; waiting for more updates
   Info: NULL
2 rows in set (0.00 sec)

出現Master has sent all binlog to slave;說明master已經和slave建立了連接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章