Mysql 雙主+keepalived 實現高可用及讀寫分離(二)

 

故障處理
 
一、寫數據的庫服務器或者網絡出現故障:
測試環境簡介:
1.10.10.10.40   mysql+keepalive
2.10.10.10.41   mysql+keepalive
3.寫入VIP:10.10.10.21(40主,41從)
4.讀取VIP:10.10.10.44(41主,40從)
 
故障一:40(寫)服務器或者網絡故障,虛擬ip 21切換到41
 
1、 40服務器恢復後,不要插上網線或者修改40的iP(防止數據自動同步,導致數據污染)
2、 暫時關閉keepalive(默認開機不啓動)
3、 啓動40的mysql並停掉slave,防止41數據同步到40,同時插上網線或者修改iP爲40;
4、 檢查41的slave狀態是有主鍵衝突,如果有主鍵衝突,導出40上的數據,並做刪除;
5、 重啓41的slave,查看是否還有主鍵衝突,如果有繼續上步操作,直到41的slave狀態恢復正常;
6、 開啓40的slave並查看slave狀態,正常情況下應該不會出現主鍵衝突,如果有主鍵衝突,導出數據並分析原因,(根據實際情況處理)
7、 檢查40與41服務器數據是否一致,如果數據一致,切換VIP 44(讀虛擬IP)到40,修改步驟如下:
  a)修改41的keepalive配置vrrp_instance VI_2 中state狀態爲BACKUP、priority 修改爲90
 b)重啓41 keepalive(確保40的keepalive是關閉狀態)
 c)修改40的keepalive配置vrrp_instance VI_2 中state狀態爲MASTER、priority 修改爲180
 d)重啓40的keepalive
e)檢查VIP 44(讀虛擬IP)是否切到40上,並且VIP 21(寫虛擬IP)應該保留在41上。
8、 線上應用測試(讀與寫)
 
故障修復後的狀態應該是:
1.10.10.10.40   mysql+keepalive
2.10.10.10.41   mysql+keepalive
3.寫入VIP:10.10.10.21(41主,40從)
4.讀取VIP:10.10.10.44(40主,41從)
 
故障二、41(讀)數據庫出現故障,VIP 44(讀虛擬IP)切到40服務器
1、修復41服務器之前應斷開網線或者修改ip(防止讀VIP自動切回)
2、關閉keepalive 所以服務器上的keepalive 最好設計成開不會自動啓動命令如下:chkconfig keepalived off
3、檢查41數據庫的slave狀態是否正常,數據庫數據同步是否正常
4、數據同步完成後啓動keepalive,檢查讀取數據的虛擬IP 44應該切回本服務器,寫數據的虛擬IP不變。
5、應用測試讀寫數據是否正常
 
故障三、兩臺數據庫服務器同時故障
1、 開啓40和41數據庫之前,先斷網線
2、 分別檢查40和41服務器的mysql更新的最新時間
3、 如果40數據比較新,先插上40的網線,使其對外提供服務。
3.1檢查讀和寫的虛擬iP是否都在40上
3.2關閉41上的keepalive,並且開啓41上msyql的salve,同步40上的數據
3.3如果同步正常啓動keepalive
3.4測試讀寫數據是否正常
 4、如果41的數據比較新,就先插上41的網線,使其對外提供服務
       4.1 檢查讀和寫的虛擬ip是否都在41上
       4.2 關閉40上的keepalive,並且開啓40上mysql的save,開始同步41上的數據
       4.3如果同步正常,啓動40的keepalive
       4.4測試讀寫數據是否正常
       4.5應用測試程序是否正常

 

 

 

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