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