演練包括被動切換和主動切換兩部分。被動切換是主庫宕機,主動切換是人工手動觸發。
演練步驟大致如下:
1 先停掉主庫,模擬主庫宕機
2 mha將vip切到備庫,備庫變成主庫,應用可以正常讀寫數據庫
3 重新啟動宕機的原主庫
4 在原主庫上建立同步關系(根據宕機時,日志記錄的binlog的文件名和偏移量,恢復從這里開始)
5 mha手動切換主庫,還原到最初狀態,應用可以正常讀寫數據庫
6 演練結束

演練過程問題總結:
1 mha每次自動切換之后都會結束自身進程,並在日志目錄如/app/mha/xxx/下生成成功或失敗標記(sys.failover.complete/error),下一次要啟動mha之前要把這些標記文件刪除,否則mha無法正常啟動,因為有了這些標記文件,mha認為已經切換結束
2 數據庫主機切換嚴謹做法是這個時候要把master設置為只讀,然后設置MASTER_LOG_FILE和MASTER_LOG_POS,最后啟動復制
3 mha手動切換要指定端口,否則只用ip會被mha認為沒有存活

4 數據庫主從庫要配置/etc/sudoers

Default requiretty 要注釋掉(解決"抱歉,您必須擁有一個終端來執行 sudo"的警告)
5 Error happened on monitoring servers

這個問題是沒找到mysql映射,添加軟連接即可

常用的MHA指令:
1 檢查mha的ssh免密登錄狀態
masterha_check_ssh --conf=/etc/mha/sys/sys.cnf
2 檢查mha的運行狀態
masterha_check_status --conf=/etc/mha/sys/sys.cnf
3 檢查主備庫的復制情況
masterha_check_repl --conf=/etc/mha/sys/sys.cnf
4 停止mha
masterha_stop --conf=/etc/mha/sys/sys.cnf
5 啟動mha
nohup masterha_manager --conf=/etc/mha/sys/sys.cnf > sys.log 2>&1 &
6 mha手動切換主庫
masterha_master_switch --conf=/etc/mha/sys/sys.cnf --master_state=alive --new_master_host=10.138.16.133 --new_master_port=3104 --orig_master_is_new_slave
7 mha重新綁定數據庫實例
sudo /etc/mha/sys/master_ip_failover --command=status --ssh_user=xxxadmin --orig_master_host=10.138.16.133 --orig_master_ip=10.138.16.133 --orig_master_port=3104