
特性
基于行複制的完全并行同步複制
實時多主架構,任意節點可讀寫
無延遲複制,事務零丢失,可靠健壯的讀寫體驗。
自動化節點關系控制:節點故障自動摘除,節點加入自動協調
接近原生的MySQL資料庫連接配接的體驗
2.應用
percona分支的PXC叢集,
Maria分支的MariaDB Cluster叢集
3.原理簡析
當一個事務在目前寫入的節點送出後,通過wsrep API(write set replication API)将這個事務變成
寫集(write set)廣播到同叢集的其他節點中,其他節點收到寫集事務後,對這個事務進行可行性檢查,
并傳回結果給wsrep API。
若大多數節點都預估自己可以成功執行這個事務,則wsrep API會做出仲裁,通知所有可以成功執行這
個事務的節點送出這個事務,并将事務成功送出的消息傳回給用戶端,同時根據需要剔除沒有成功執行
事務的節點
4.galera共享庫
galera本身是作為一個插件式的共享庫檔案,MySQL通過調用galera寫集複制API挂鈎,獲得galera叢集
特性。
4.1 galera共享庫組成部分
galera庫是一個提供準備,複制,應用寫集事務功能的協定棧,其重要組成部分為:
wsrep API:寫集複制功能元件,負責提供關系型資料庫管理與複制服務,定義接口
wsrep hooks:在資料庫引擎中的內建寫集元件
Gelera Provider:将共享庫轉化為wsrep API
Certification Layer:保護寫集并完整性,驗證寫集完整性
replication:管理複制協定,提供完整的指令系統
GCS framwork:為叢集組通信提供插件架構
5.優勢
與異步複制相比:
資料一緻性強,傳統異步複制并不能保證主從資料一緻性,這是由于一般情況下,主庫多線程并發執行
事務,但從庫卻隻有一個線程重做事務,在高壓力情況下必然會導緻主從延遲。
與使用半同步複制或分布式鎖實作的同步複制相比:
性能高,擴充性好,半同步複制在高負載甚至從庫性能較差的情況下,難以保證其性能。即使自動的
從半同步複制切換到異步複制,也會犧牲其最大的優點:一緻性。其擴充友好度也較差
galera叢集的獨特優勢:
1.叢集中的每個節點都儲存着一份完整的資料副本,資料備份安全性高
2.叢集擴充性強,可以自适應的增加或者下線節點:
新節點上線時,可以空庫狀态直接從叢集中擷取全量資料傳輸(SST),也可以選擇從恢複最新備份狀
态加入叢集,擷取差量資料傳輸(IST)
下線維護其中一個節點時,直接關閉執行個體,叢集就會自動踢出這個節點。維護完畢上線後,會根據自身
資料與叢集資料的落後程度決定通過SST或者IST傳輸資料。
3.高效的同步效率,提供了高性能的讀寫狀态(相對于同步複制)。由于同步機制的原因,甚至可以
通過增加slave線程的辦法更進一步提高節點同步效率
4.更加友好的軟硬體相容性:MySQL官方的NDB,雖然也可以實作同樣功能,但因對軟硬體要求較高,
導緻其使用量與galera叢集不在一個數量級,其增加節點容易,但無法不停機移除節點
7.缺點:
DDL操作會嚴重阻塞同步線程,線上大動作DDL會導緻有可能導緻節點堵塞無響應,更進一步會導緻
部分節點下線。實際使用中需要搭配pt-osc或者gh-osc等線上DDL工具來進行操作DDL。
附:無延遲複制是指寫集同一時間送出,但實際環境中可能因為部分原因導緻節點間執行速度有差異,但從理念上已經比半同步複制更先進了一些
<a href="http://galeracluster.com/">本文部分内容參考了galera官方網站的内容,與其《Minimizing downtime and maximizing elasticity with Galera Cluster for MySQL》白皮書</a>
本文轉自 angry_frog 51CTO部落格,原文連結:http://blog.51cto.com/l0vesql/2044262