上篇文章是關於MariaDB利用Galera做集群的部署說明,一般情況下數據庫集群運行很穩定,幾乎無需運維關注。但是如果機房網絡不暢通,經常有比較高的ping延遲,那麼這種部署方式肯定會讓運維人員頭疼。下面我們說明下集群如果發生故障,我們該如何恢復集群。
1. 檢驗節點是否正常
SHOW GLOBAL STATUS LIKE 'wsrep_cluster_status';
正常情況下,查詢返回結果是Primary,其他任何返回值都表示該節點異常,如果每一個節點都不是Primary,說明我們需要重置集群的Quorum(一種集群投票選舉機制)。
多數情況下是某個節點因為網絡原因無法連接其他節點,恢復網絡後,集群會自動恢復正常。很少出現都不是Primary這種問題,一旦出現,我們就需要重置Quorum。
2. 重置Quorum
2.1 首先要找到事務最大的節點
上一篇文中,我們標註了需要運維注意的幾個參數裡面有個wsrep_last_committed,該參數表示對應節點最後一次執行的事務編號,因為集群發生了問題,會有事務不同步,我們應該找到事務最大的節點,從該節點恢復集群。
執行如下:
SHOW STATUS LIKE 'wsrep_last_committed';
2.2 執行重置Quarum操作
選擇事務最大的節點之後,我們就可以在該節點上重新恢復集群了。Quarum的重置恢復集群有兩種處理方式:自動和手動。官網推薦使用自動方式恢復,因為自動恢復的節點會繼續保留原有的緩存,恢復比較快。
自動恢復
下面說明下如何自動恢復,很簡單,在事務最大的節點上執行SQL:
SET GLOBAL wsrep_provider_options='pc.bootstrap=YES';
執行這個sql之後,該節點會作為一個新的集群節點,其他節點會以此同步他們自己的狀態,完成同步。
手動恢復
停掉所有服務
service mysql stop
在事務最大的節點A上,重新啟動一個新的集群
service mysql start --wsrep-new-cluster
啟動其他節點
service mysql start
手動啟動之後,其他節點將以A節點的狀態快照為準,完成集群的同步。此種方式恢復可能比較慢。(事務差距大的情況下)
閱讀更多 吳濤分享 的文章