1. 何謂Galera Cluster
何謂Galera Cluster瓜客?就是集成了Galera插件的MySQL集群戏溺,是一種新型的钉稍,數(shù)據(jù)不共享的,高度冗余的高可用的方案报嵌。目前Galera Cluster有兩個(gè)版本虱咧,分別是Percona Xtradb Cluster及MariaDB Cluster,都是基于Galera的锚国,所以這里都統(tǒng)稱為Galera Cluster了腕巡,因?yàn)镚alera本身是具有多主特性的,所以Galera Cluster也就是multi-master的集群架構(gòu)血筑,如圖1所示:
上圖有三個(gè)實(shí)例組成一個(gè)集群绘沉,而這三個(gè)節(jié)點(diǎn)與普通的主從架構(gòu)不同,它們都可以作為主節(jié)點(diǎn)豺总,三個(gè)節(jié)點(diǎn)是對(duì)等的车伞,這種一般被稱為multi-master架構(gòu),當(dāng)有客戶端要寫入或者讀取數(shù)據(jù)時(shí)喻喳,隨便連接哪一個(gè)節(jié)點(diǎn)都是一樣的另玖,讀到的數(shù)據(jù)是相同的,寫入某一個(gè)節(jié)點(diǎn)后表伦,集群自己會(huì)將新數(shù)據(jù)同步到其他節(jié)點(diǎn)上谦去,這種架構(gòu)不共享任何數(shù)據(jù),是一種高度冗余架構(gòu)蹦哼。
一般的使用方法是鳄哭,在這個(gè)集群的前端再搭建一個(gè)中間層(類似于這種中間層的思想架構(gòu)方案很多時(shí)候都會(huì)用到,是一種非常常見的解決方案)纲熏,這個(gè)中間層的功能包括建立連接窃诉,管理連接池,負(fù)責(zé)使三個(gè)節(jié)點(diǎn)的負(fù)載基本均衡赤套,負(fù)責(zé)在客戶端與節(jié)點(diǎn)的連接斷開之后的重連,也可以負(fù)責(zé)讀寫分離(在集群機(jī)器性能情況不同的情況下可以用這種方案)等等珊膜。使用這個(gè)中間層之后容握,由于這三個(gè)節(jié)點(diǎn)在客戶端方面是完全透明的,客戶端只需要指定這個(gè)數(shù)據(jù)庫(kù)集群的源地址鏈接到中間層即可车柠。中間層會(huì)負(fù)責(zé)客戶端與后端節(jié)點(diǎn)連接的傳遞工作剔氏,因?yàn)檫@個(gè)架構(gòu)支持多點(diǎn)寫入塑猖,所以避免了主從復(fù)制架構(gòu)中的數(shù)據(jù)不一致問題,從而可以做到主從讀寫切換的高度優(yōu)雅谈跛,在不影響用戶的情況下羊苟,離線維護(hù)等工作,MySQL的高可用感憾。從此開始蜡励,非常完美。
2.為什么需要Galera Cluster?
傳統(tǒng)的MySQL集群方案有MHA阻桅、MMM等凉倚,這些架構(gòu)是每個(gè)需要數(shù)據(jù)庫(kù)高可用方案的入門必備選型。但這些傳統(tǒng)的架構(gòu)一直被人們所詬病嫂沉,因?yàn)镸ySQL的主從模式天生的不能保證數(shù)據(jù)完全一致性稽寒。可以說趟章,傳統(tǒng)的方案只能是通過犧牲性能杏糙,來獲得數(shù)據(jù)一致性,但也只是在降低數(shù)據(jù)不一致性的可能性而已蚓土。所以現(xiàn)在就急需一種新型架構(gòu)宏侍,從根本上解決這樣的問題,天生的擺脫掉主從復(fù)制模式這樣的“美中不足”之處了北戏。
相比傳統(tǒng)的主從復(fù)制架構(gòu)负芋,Galera Cluster解決的最核心問題是,在三個(gè)實(shí)例(節(jié)點(diǎn))之間嗜愈,它們的關(guān)系是對(duì)等的旧蛾,multi-master架構(gòu)的,在多節(jié)點(diǎn)同時(shí)寫入的時(shí)候蠕嫁,能夠保證整個(gè)集群數(shù)據(jù)的一致性锨天,完整性與正確性。
3.Galera Cluster如何解決問題
現(xiàn)在已經(jīng)知道Galera Cluster是MySQL封裝了具有高度一致性剃毒,支持多點(diǎn)寫入的同步通信模塊Galera而做的病袄,它是建立在MySQL同步基礎(chǔ)之上的,使用Galera Cluster時(shí)赘阀,應(yīng)用程序可以直接讀益缠、寫某個(gè)節(jié)點(diǎn)的最新數(shù)據(jù),并且可以在不影響程序讀寫的情況下基公,下線某個(gè)節(jié)點(diǎn)幅慌,因?yàn)橹С侄帱c(diǎn)寫入,使得Failover變得非常簡(jiǎn)單轰豆。