一主多從快速變級聯進行主從切換

背景需求模型

業務需求和性能影響,需將主庫切換到新的服務器,並進行架構調整。

切換模型大概爲:

       切換到

                          圖1-1 一主多重模型 圖1-2 切換前模型


最後再將主庫254切換爲40.完成切換。


簡化模型:

我們需要做的是把一主多從逐步變爲級聯:


  圖1-3 切換模型


操作步驟

1、在B機器上授權C機器的複製權限

<pre name="code" class="sql">mysql><span style="font-family: Arial, Helvetica, sans-serif;">GRANT REPLICATION SLAVE ON *.* TO rep@'C_IP' IDENTIFIED BY '$password';</span>


2、確認C機器已同步的位置

查看C機器的slave複製狀態:

mysql>stop slave;
mysql>show slave status \G

記錄此時C機器複製A主庫的  Master_Log_File和 Exec_Master_Log_Pos: 位置;


3、記錄B機器的位置

在從庫B上執行show slave status \G;查看從庫B上的Exec_Master_Log_Pos是否已經大於從庫C上的Exec_Master_Log_Pos,如果大於,則執行stop slave停掉從庫B的複製,這時需要記下從庫B上的  Relay_Master_Log_File(B),Exec_Master_Log_Pos(B)兩個值,在從庫B上執行show master status,記下BINLOG文件名字File(B)以及位置Position(B),然後start slave開啓複製。

mysql>show slave status \G

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.xxxxx | xxxxxx |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

確認B機器的的Exec_Master_Log_Pos,這裏記得在B機器要先stop slave ,記錄下  Relay_Master_Log_File(B),Exec_Master_Log_Pos(B),以及B機器的masterbinlog狀態。然後再開啓。


4、C機器追趕到B機器位置

通過前面三步驟,我們已經有了這些基本信息,那麼就先在C機器執行命令追趕到B機器複製的位置,在C機器上操作:

mysql>start slave  UNTIL MASTER_LOG_FILE ='B-Relay_Master_Log_File', MASTER_LOG_POS =B-Exec_Master_Log_Pos;

等待複製到我們設置的值,然後在C執行:
mysql>stop slave;


5、C複製指向B

前面步驟都確認沒有問題後,我們開啓C複製指向B的複製,這個時候就要利用之前我們記錄C的masterbinlog位置信息了。簡單的主從創建關係:
change master to master_host='B-IP',master_port=B-port,master_user='複製賬號',master_password='複製密碼',master_log_file='B-master-binlog',master_log_pos=b-masterpostion;

然後start slave開啓複製!


6、重複執行以上步驟

達到1-2模型後,將254的讀寫請求切到40即完成了本次所有遷移操作。





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