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的整个同步过程,真是心在滴血文档