mysql5.7主從切換(master/slave switchover)
阿新 • • 發佈:2020-12-23
本文源自: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建立了連線