Galera


Galera是支持mysql集群同步多主軟件
多主特性:
1.同步復制,主備無延遲(其中一台數據庫掛掉之后數據不會丟失)
2.支持多主同時讀寫,保證數據一致性
(應該是理論上的,因為我們在使用的時候也出現了不會立即同步的情況)
3.集群中各節點保存的是全量數據
4.節點添加、刪除,自動檢測和配置
(當新增節點或者停機某個節點維護的時候,增量數據和基礎數據不需要人工手動備份,galera cluser會在線自動拉取數據,集群最終保持數據一致)
5.行級別並行復制
6.不用寫binlog
 
限制:
1.集群必須是3個節點(2個也能運行)
2.存儲引擎Innodb/Xtradb/Maria
題外話:
關於Xtradb和Maria是MariaDb用到的引擎,MariaDb其實就是Mysql 一個分支,目的就是完全兼容mysql。目前算是加強版了,對於用戶使用沒什么感知跟Mysql一樣呢
Maria(Aria)是MyISAM存儲引擎的增強版
Xtradb算是Innodb的加強版,MariaDb10.1版本默認的是Xtradb,10.2默認的是Innodb了
3.不支持的SQL:LOCK / UNLOCK TABLES / GET_LOCK(), RELEASE_LOCK()…
(這些是鎖的相關語句吧,沒怎么用過)
4.不支持XA Transaction(不懂,百度了下是分布式事務)
 
目前可以用的產品
(看到這里我才明白原來是MariaDb支持Galera Cluser,然后我們生產環境一直用的這個,我都不知道……)
 
客戶端/Galera節點交互圖
 
Galera復制的原理
Galera復制是一種基於認證的復制,保證一個拷貝的可序列化性
1. 事務在本地節點執行時采取樂觀策略,成功廣播到所有節點后再做沖突檢測
(比如當一個寫請求到一個節點上,該節點執行事務認為跟其他節點的事務不沖突,在本地執行完,在commit之前會將這個寫集合廣播到其他節點,在做沖突檢測)
2. 檢測出沖突時,本地事務優先被回滾
3. 每個節點獨立、異步執行隊列中的WS(寫集合)
4. 事務T在A節點執行成功返回客戶端后,其他節點保證T一定會被執行,因此有可能存在延遲,即虛擬同步
 
Galera flow control(流量控制)
問題:
Galera是同步復制(虛擬同步):由於每個節點執行速度不同,長時間運行后導致有些節點隊列里面堆積了很多任務,導致執行越來越慢,會丟失一些事務。
原理:
Galera內部實現了flow control作用就是協調各個節點,保證各個節點執行事務的速度大於隊列增長的速度,避免丟失事務。
整個Galera Cluser中,同時只能有一個節點進行廣播,每個節點都會獲取廣播的機會,當慢節點的執行隊列超過一定長度,它會廣播一個FC_PAUSE消息。所有節點收到消息后都會暫緩廣播。直到慢節點執行隊列縮小到一定長度,Galera Cluser數據同步又開始恢復。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM