03.02 Galera Cluster故障恢復

上篇文章是關於MariaDB利用Galera做集群的部署說明,一般情況下數據庫集群運行很穩定,幾乎無需運維關注。但是如果機房網絡不暢通,經常有比較高的ping延遲,那麼這種部署方式肯定會讓運維人員頭疼。下面我們說明下集群如果發生故障,我們該如何恢復集群。

Galera Cluster故障恢復

1. 檢驗節點是否正常

SHOW GLOBAL STATUS LIKE 'wsrep_cluster_status';

Galera Cluster故障恢復

正常情況是Primary

正常情況下,查詢返回結果是Primary,其他任何返回值都表示該節點異常,如果每一個節點都不是Primary,說明我們需要重置集群的Quorum(一種集群投票選舉機制)。

多數情況下是某個節點因為網絡原因無法連接其他節點,恢復網絡後,集群會自動恢復正常。很少出現都不是Primary這種問題,一旦出現,我們就需要重置Quorum。

2. 重置Quorum

2.1 首先要找到事務最大的節點

上一篇文中,我們標註了需要運維注意的幾個參數裡面有個wsrep_last_committed,該參數表示對應節點最後一次執行的事務編號,因為集群發生了問題,會有事務不同步,我們應該找到事務最大的節點,從該節點恢復集群。

執行如下:

SHOW STATUS LIKE 'wsrep_last_committed';

Galera Cluster故障恢復

數字代表事務編號

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節點的狀態快照為準,完成集群的同步。此種方式恢復可能比較慢。(事務差距大的情況下)

感謝您的閱讀,不足望指正,可留言交流。


分享到:


相關文章: