gelera集羣詳解

【MySQL】galera集羣原理簡介

  1. 特性

    基於行復制的徹底並行同步複製
    實時多主架構,任意節點可讀寫
    無延遲複製,事務零丟失,可靠健壯的讀寫體驗。
    自動化節點關係控制:節點故障自動摘除,節點加入自動協調
    接近原生的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集羣不在一個數量級,其增長節點容易,但沒法不停機移除節點

    6.缺點:

    DDL操做會嚴重阻塞同步線程,線上大動做DDL會致使有可能致使節點堵塞無響應,更進一步會致使
    部分節點下線。實際使用中須要搭配pt-osc或者gh-osc等在線DDL工具來進行操做DDL。

附:無延遲複製是指寫集同一時間提交,但實際環境中可能由於部分緣由致使節點間執行速度有差別,但從理念上已經比半同步複製更先進了一些
本文部份內容參考了galera官方網站的內容,與其《Minimizing downtime and maximizing elasticity with Galera Cluster for MySQL》白皮書sql

相關文章
相關標籤/搜索