MySQL Galera Cluster
做爲市面上比較成熟的MySQL
Master-Master
分佈式架構node
我用了3臺作集羣, 使用wsrep_sst_method=rsync
作同步配置git
SQL DDL DML
會發送到下面全部Node
,執行完畢以後才返回node
都在線,它是一個很是完美的主主架構,數據具備絕對的一致性,而且能夠分散SELECT
的壓力node
都在線的狀況BinLog
文件就是不完整的,在重啓期間的BinLog
會徹底丟失若是MySQL
文件體積已經很大了,而後想新加入一臺MySQL Node
,或者重啓了其中一臺節點,災難來了:github
rsync
的方式,直接去主節點上同步文件,你沒看錯,是整個文件都同步,根本沒對比,是全同步筆者有100G
左右的數據,結果就是重啓其中一臺,那麼集羣停機接近1個小時等待同步文件結束架構
根據官方文檔:rsync
在數據同步(SST
和IST
)的時候,速度最快,可是會鎖住提供數據的節點,xtrabackup
只會短暫的鎖住節點。
我曾猜測Node重啓以後,會根據主Node
的BinLog
的最後同步點,去拉取BinLog
進行更新操做, 可是我萬萬沒想到竟然是這麼弱雞的方式,鎖住了集羣同步文件?WTF?分佈式
其實即便使用xtrabackup
,也會鎖住了等待備份完成了再恢復,此時集羣是不能更新數據的,更沒法提供服務。大數據
因此MySQL Galera Cluster
這個模式玩玩小數據,好比在1G內仍是能夠。對於大數據,仍是洗洗睡吧。code
我使用 https://github.com/Xfennec/pr... 查看的rsync的整個同步過程,真是心在滴血文檔