Intro 這篇原是寫在Percona XtraDB Cluster的情境,但大多數情況可以套用在MySQL+Galera組合,不管來自Codership, MariaDB Galera Cluster或你自己的build。目前經過筆者的測試,在MariaDB Galera Cluster是符合的。 假設cluster中,有節點A, B, C。模擬在不同節點停止的情境下,如何修復正常。(圖片請參閱原文) 情境1 節點A正常停止。 像是為了系統維護或是更改環境設定等等,此時正常關掉節點A。在這情況下,其他節點會收到通知,因此會自動更新設定值,如cluster大 小,quorum的計算方式等等。一旦我們重啟節點A, 就會自動加入回cluster。這新加入的節點會等資料都同步完成後才開始服務。 同步方式:由writeset cache(gcache.size)資料決定,若要同步的資料都在此cache中,則會執行IST(Incremental State Transfers),較輕量且快速。若不是,則會執行SST(State Snapshot Transfer),將完整的binary data snapshot複製到節點A。 情境2 節點A, B正常停止。 此時cluster大小為1。此時節點C為primary component,可以正常服務。要將其他節點加入回cluster,就只要重啟即可。 同步方式: 節點C切換至 "Donor/Desynced" 模式,提供最後的狀態給第一個加入節點 (State Transfer)。有些負載平衡器 (Load Balancer) 會移除Donor模式的節點,所以應避免一個節點的情況。 重啟A, B節點時,由於gcache可能還存在該機器中,為了避免節點B使用到節點A的gcache,需設定這兩台的Donor為節點C service mysql start –wsrep_sst_donor=nodeC 情境3 節點A, B, C正常停止。 這時候Cluster已經失效,所有節點已經停止,需要重新啟動Cluster。重新啟動需要由最後關機的機器開始,確保資料的完整性。從grastate.dat檔案可以得知,比較seqno,最大者的為最後關機的機器。 使用下列指令啟動Cluster service mysql start –wsrep_new_cluster …
Tag Archives: database
[筆記] 安裝MariaDB Galera Cluster
簡介 MariaDB Galera Cluster是基於MariaDB系統下的叢集架構 (以下將以Cluster稱之),採用Multi Master設計,在Cluster中每個節點都可以作為Master進行讀寫動作。(注意:現在只支援 InnoDB/XtraDB storage engine。) 相較於傳統Master Slave設計 (例如MySQL Cluster) 提供的讀寫分離,Multi Master可以更彈性的規劃節點數量,加入新的節點而不影響現有規劃。 更能夠搭配 MariaDB MaxScale 提供HA, content routing, querying logging等服務。 安裝與設定 假設現在有三台機器要組成Cluster,資訊分別如下 NodeA 10.10.0.230 NodeB 10.10.0.231 NodeC 10.10.0.232 安裝 以 ubuntu 14.04 為例 (其他版本請用這頁選擇 source list) 加入source list sudo apt-get install software-properties-common sudo apt-key adv –recv-keys –keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db sudo add-apt-repository ‘deb …