在之前,數據庫的集羣配置一直很難,難點在於MySQL主從結構的高可用和讀寫分離。萬幸的是,Galera/GR的出現,讓整個集羣的配置都極大程度地簡化了。算法
如下是一個簡單的MySQL集羣拓撲圖:數據庫
![](http://static.javashuo.com/static/loading.gif)
1.MySQL中間件:對MySQL Server的讀寫操做進行路由(即讀寫分離);分庫分表(sharding)安全
- (1).MySQL Router:MySQL官方提供的輕量級MySQL代理(路由),只提供讀寫分離功能,前身爲SQL Proxy。
- (2).ProxySQL:相似於MySQL Router,輕量級MySQL代理,提供讀寫分離功能,也支持一些sharding功能。有percona版和官方版兩個版本。
- (3).MaxScale:MariaDB的中間件,和MySQL Router、ProxySQL相似。
- (4).Amoeba、Cobar、MyCAT:提供不少功能,最主要的功能包括讀寫分離、sharding。
- 這三者的淵源較深,都是開源的。Amoeba後繼無人,因而Cobar出來,Cobar後繼無人,加上2013年出現了一次較嚴重的問題,因而MyCAT站在Cobar的肩膀上出來了。
2.MySQL主從複製的高可用:至少要實現主從切換或故障時選舉新master節點併發
- (1).MMM:淘汰了,在一致性和高併發穩定性等方面有些問題。
- (2).MHA:有些人還在用,但也有些問題,也是趨於淘汰的MySQL主從高可用方案。
- (3).Galera:引領時代的主從複製高可用技術。
- (4).MariaDB Galera Cluster:MariaDB對Galera的實現。
- (5).PXC:Percona XtraDB Cluster,是Percona對Galera的自我實現,用的人不少。
- (6).GR:Group Replication,MySQL官方提供的組複製技術(MySQL 5.7.17引入的技術),基於Paxos算法。
- MariaDB Galera Cluster、PXC、GR是相似的,都各有優勢。但GR是革命性的,基於原生複製技術,據傳不少方面都優於PXC。
- MariaDB Galera Cluster、PXC、GR爲了安全性和性能考慮,作出了不少強制性的限制。例如基於GTID複製、只能InnoDB表,每表都必須有主鍵等。要使用它們提供主從複製的高可用,必需要了解它們的各項限制。