故障處理
一、寫數據的庫服務器或者網絡出現故障:
測試環境簡介:
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應用測試程序是否正常