1. 何謂Galera Cluster
何謂Galera Cluster?就是集成了Galera插件的MySQL集群,是一種新型的,數(shù)據(jù)不共享的,高度冗余的高可用的方案。目前Galera Cluster有兩個版本,分別是Percona Xtradb Cluster及MariaDB Cluster,都是基于Galera的,所以這里都統(tǒng)稱為Galera Cluster了,因為Galera本身是具有多主特性的,所以Galera Cluster也就是multi-master的集群架構(gòu),如圖1所示:

上圖有三個實例組成一個集群,而這三個節(jié)點與普通的主從架構(gòu)不同,它們都可以作為主節(jié)點,三個節(jié)點是對等的,這種一般被稱為multi-master架構(gòu),當有客戶端要寫入或者讀取數(shù)據(jù)時,隨便連接哪一個節(jié)點都是一樣的,讀到的數(shù)據(jù)是相同的,寫入某一個節(jié)點后,集群自己會將新數(shù)據(jù)同步到其他節(jié)點上,這種架構(gòu)不共享任何數(shù)據(jù),是一種高度冗余架構(gòu)。
一般的使用方法是,在這個集群的前端再搭建一個中間層(類似于這種中間層的思想架構(gòu)方案很多時候都會用到,是一種非常常見的解決方案),這個中間層的功能包括建立連接,管理連接池,負責使三個節(jié)點的負載基本均衡,負責在客戶端與節(jié)點的連接斷開之后的重連,也可以負責讀寫分離(在集群機器性能情況不同的情況下可以用這種方案)等等。使用這個中間層之后,由于這三個節(jié)點在客戶端方面是完全透明的,客戶端只需要指定這個數(shù)據(jù)庫集群的源地址鏈接到中間層即可。中間層會負責客戶端與后端節(jié)點連接的傳遞工作,因為這個架構(gòu)支持多點寫入,所以避免了主從復(fù)制架構(gòu)中的數(shù)據(jù)不一致問題,從而可以做到主從讀寫切換的高度優(yōu)雅,在不影響用戶的情況下,離線維護等工作,MySQL的高可用。從此開始,非常完美。
2.為什么需要Galera Cluster?
傳統(tǒng)的MySQL集群方案有MHA、MMM等,這些架構(gòu)是每個需要數(shù)據(jù)庫高可用方案的入門必備選型。但這些傳統(tǒng)的架構(gòu)一直被人們所詬病,因為MySQL的主從模式天生的不能保證數(shù)據(jù)完全一致性??梢哉f,傳統(tǒng)的方案只能是通過犧牲性能,來獲得數(shù)據(jù)一致性,但也只是在降低數(shù)據(jù)不一致性的可能性而已。所以現(xiàn)在就急需一種新型架構(gòu),從根本上解決這樣的問題,天生的擺脫掉主從復(fù)制模式這樣的“美中不足”之處了。
相比傳統(tǒng)的主從復(fù)制架構(gòu),Galera Cluster解決的最核心問題是,在三個實例(節(jié)點)之間,它們的關(guān)系是對等的,multi-master架構(gòu)的,在多節(jié)點同時寫入的時候,能夠保證整個集群數(shù)據(jù)的一致性,完整性與正確性。
3.Galera Cluster如何解決問題
現(xiàn)在已經(jīng)知道Galera Cluster是MySQL封裝了具有高度一致性,支持多點寫入的同步通信模塊Galera而做的,它是建立在MySQL同步基礎(chǔ)之上的,使用Galera Cluster時,應(yīng)用程序可以直接讀、寫某個節(jié)點的最新數(shù)據(jù),并且可以在不影響程序讀寫的情況下,下線某個節(jié)點,因為支持多點寫入,使得Failover變得非常簡單。