1. 程式人生 > >Percona XtraDB Cluster叢集節點重啟及故障轉移

Percona XtraDB Cluster叢集節點重啟及故障轉移

一、重新啟動叢集節點

要重新啟動叢集節點,請關閉MySQL並重新啟動它。該節點將離開叢集(並且法定人數的總計數應該減少)。釋出命令 systemctl restart mysql

當它重新加入時,節點應該使用IST進行同步。如果gcache在整個叢集中的任何其他節點上的檔案中找不到IST所需的更改集,則會執行SST。因此,從叢集的角度來看,重新啟動叢集節點以進行滾動配置更改或軟體升級非常簡單。

注意
   如果您重新啟動具有無法載入MySQL配置更改的節點,則Galera將刪除該節點的狀態並強制該節點的SST。

二、叢集故障轉移

叢集成員資格僅由哪些節點連線到叢集的其餘部分來確定; 沒有配置設定明確定義所有可能的叢集節點的列表。因此,每次節點加入叢集時,叢集的總大小都會增加,並且節點離開(優雅地)時大小會減小。

叢集的大小用於確定實現法定人數所需的投票。當一個或多個節點被懷疑不再是叢集的一部分時(他們沒有迴應),將進行法定人數投票。此無響應超時是evs.suspect_timeout在設定wsrep_provider_options(預設值為5秒),並且當一個節點出現異常,寫操作將被阻止在叢集上的時間比超時稍長。

一旦確定某個節點(或多個節點)斷開連線,則其餘節點將投出法定票數,並且如果斷開連線之前的大多數節點仍處於連線狀態,則該分割槽保持連線狀態。在網路分割槽的情況下,一些節點將在網路斷開的每一側處於活動並處於活動狀態。在這種情況下,只有法定人數會繼續。沒有法定人數的分割槽將更改為非主要狀態。

因此,在2節點叢集中無法實現安全的自動故障切換,因為一個節點的故障將導致其餘節點變為非主節點。而且,任何一個節點數量為偶數的節點(比如兩個不同交換機中的兩個節點)都有一定的分裂情況的可能性,當兩個節點之間的連線丟失時,任何一個分割槽都不能保留法定數量投票,而成為非主要分割槽。

因此,對於自動故障轉移,建議使用3s規則。它適用於各種級別的基礎架構,具體取決於叢集散佈多遠以避免單點故障。例如:

   單個交換機上的叢集應該有3個節點
   跨越叢集的交換機應平均分佈在至少3臺交換機上
   跨越網路的叢集應該跨越至少3個網路
   跨越資料中心的叢集應至少跨越3個數據中心

這些規則將防止裂腦情況並確保自動故障切換正常工作。

1、使用仲裁員

如果新增第三個節點,交換機,網路或資料中心的成本太高,則應使用仲裁器。仲裁者是可以接收和轉發複製的叢集的投票成員,但它不會保留任何資料,並且執行自己的守護程序而不是mysqld。即使是第三位的仲裁員也可以將分裂腦保護新增到僅分佈在兩個節點/位置的叢集中。

2、恢復非主叢集

需要注意的是,3s的規則僅適用於自動故障轉移。如果是雙節點叢集(或者在其他一些中斷使少數節點處於活動狀態的情況下),則一個節點的故障將導致另一節點成為非主節點並拒絕操作。但是,您可以使用以下命令從非主狀態恢復節點:

SET GLOBAL wsrep_provider_options = ‘pc.bootstrap = true’ ;

這將告訴節點(以及所有節點仍然連線到其分割槽)它可以成為主叢集。但是,只有當您確定沒有其他分割槽在主伺服器上執行時才能執行此操作,否則Percona XtraDB Cluster將允許這兩個分割槽發生分歧(並且最終會生成兩個不可能重新分割槽的資料庫自動合併)。

例如,假設有兩個資料中心,其中一個是主要資料中心,另一個數據中心用於災難恢復,每個資料中心都有偶數個節點。當額外仲裁器節點僅在主資料中心中執行時,以下高可用性功能將可用:

   主資料中心或輔助資料中心內任何一個或多個節點的自動故障轉移
   輔助資料中心的故障不會導致主資料中心失效(由於有仲裁節點)
   主資料中心的故障將使輔助中心處於非主要狀態。
   如果已執行災難恢復故障轉移,則可以讓輔助資料中心使用單個命令引導自己,但災難恢復故障轉移仍在您的控制之中。