MHA failover流程
MHA manager啟動後,啟動流程以及failover流程如下:
1. 啟動前準備情況
2. 檢查數據庫服務器狀態,獲取相關的配置參數
3. 測試SSH連接是否成功
4. 測試MHA node是否可用
5. 開始檢查SLAVE的差異日誌應用權限
6. 確定當前的複製架構
7. 調試master_ip_failover_script腳本
8. 調試shutdown_script
9. 設置二次檢查的主機masterha_secondary_check
10. MHA啟動完畢,進入檢測過程
11. 檢測到MASTER掛了
12. 通過定義的二次檢測,確認MASTER是否真的掛了
13. 確認MASTER掛了,開始執行failover流程
14. 再次嚐試連接MASTER和MASTER 的SSH
15. 再次檢查SLAVE的配置是否有變化,是否符合failover條件
16. 正式開始failover
17. 再次對SLAVE的配置做檢查
18. 對原Master的master_ip_failover_script和shutdown_script的做操作,關閉SSH或者關閉數據庫
19. 開始做差異日誌的恢複,獲取SLAVE最後得到的binlog位置
20. 獲取原MASTER的binlog日誌
21. 確定新的MASTER
22. 在新的MASTER上應用差異的binlog日誌
23. 獲取新MASTER的binlog位置
24. 如果有master_ip_failover,那麼給新master設置VIP或者設置域名
25. 開始回去其他SLAVE,也是從原MASTER的binlog對比來做恢複
26. 差異日誌應用完畢後,切換所有的slave到新MASTER
27. failover操作完成,生成failover報告
28. master manager退出
其中:
#master_ip_failover_script:
首先啟動的時候會調用這個腳本--檢測status
/opt/master_ip_failover_script.sh –command=status –ssh_user=root –orig_master_host=192.168.153.150 –orig_master_ip=192.168.153.150 –orig_master_port=3306
然後在正式failover過程中的第二步,Dead Master Shutdown Phase階段會在次執行。 第18步,綜合shutdown_script關閉數據庫或者服務器
/opt/master_ip_failover_script.sh –orig_master_host=192.168.153.150 –orig_master_ip=192.168.153.150 –orig_master_port=3306 –command=stopssh –ssh_user=root
在正式failover過程中的第3.4步驟中(選舉新的master以後,應用差異的binlog後),會再次執行。在第24步,執行VIP或者域名切換操作
/opt/master_ip_failover_script.sh –command=start –ssh_user=root –orig_master_host=192.168.153.150 –orig_master_ip=192.168.153.150 –orig_master_port=3306 –new_master_host=192.168.153.151 –new_master_ip=192.168.153.151 –new_master_port=3306 –new_master_user=’mha’ –new_master_password=’mha’
#shutdown_script:
首先啟動的時候會執行這個腳本,執行時間緊跟著master_ip_failover_script第一次執行後麵
/opt/shutdown_script.sh –command=status –ssh_user=root –host=192.168.153.150 –ip=192.168.153.150
第二次執行是在master_ip_failover_script第二次執行後麵
/opt/shutdown_script.sh –command=stopssh –ssh_user=root –host=192.168.153.150 –ip=192.168.153.150 –port=3306
#report_script=”" //通知腳本
在masterha_manager自動切換完成的最後會調用一次這個腳本。
report_script.sh –orig_master_host=(dead master’s hostname) –new_master_host=(new master’s hostname) –new_slave_hosts=(new slaves’ hostnames, delimited by commas) –subject=(mail subject) –body=(body)
#master_ip_online_change_script:
在使用masterha_master_switch –conf=/etc/app1.cnf –master_state=alive –new_master_host=192.168.153.151主動切換mysql master的時候會調用.
在online切換的第二階段,拒絕寫入原master的時候執行。
/opt/master_ip_online_change_script.sh –command=stop –orig_master_host=192.168.153.150 –orig_master_ip=192.168.153.150 –orig_master_port=3306 –orig_master_user=’mha’ –orig_master_password=’mha’ –new_master_host=192.168.153.151 –new_master_ip=192.168.153.151 –new_master_port=3306 –new_master_user=’mha’ –new_master_password=’mha’
然後會在new master上執行
/opt/master_ip_online_change_script.sh –command=start –orig_master_host=192.168.153.150 –orig_master_ip=192.168.153.150 –orig_master_port=3306 –orig_master_user=’mha’ –orig_master_password=’mha’ –new_master_host=192.168.153.151 –new_master_ip=192.168.153.151 –new_master_port=3306 –new_master_user=’mha’ –new_master_password=’mha’
最後更新:2017-10-13 23:04:04