1. 程式人生 > >MySql高可用叢集搭建

MySql高可用叢集搭建

前言

傳統mysql高可用叢集都是建立在mysql主從同步複製基礎上的,利用mysql原生的同步技術,搭配叢集管理元件,以及對外輸出元件,組成一個高可用的mysql叢集。

其中最複雜的部分就是叢集異常狀態後的叢集重構,包括重新選主、重新配置主從同步、異常例項恢復後的再加入等,這部分功能實現起來並不複雜,但對邏輯嚴謹性要求較高,因此市面上同類產品百花齊放,例如最流行的MHA開源產品,以及各大中小網際網路公司都宣佈的自研產品。

複製歷程

mysql同步技術經歷了“非同步複製” -> “半同步複製” - >“增強半同步複製” 後,在資料一致性保護方面已基本成熟,基於mysql5.7增強半同步技術,實現mysql叢集高可用也就變得更安全可靠。

MGR

mysql同時也推出了組複製(MySQL Group Replication,簡稱MGR)技術,MGR依靠分散式一致性協議(Paxos協議的變體),實現了分散式下資料的最終一致性。

簡單來說,由若干個節點共同組成一個複製組,當一個事務提交時,必須經過組內大多數節點(N / 2 + 1)決議並通過,才能最終得以提交。

同時MGR支援單主模式和多主模式,單主模式時只有一個節點能夠寫入,其他節點只讀,當主節點異常時,由其他節點重新選出新主 。

多主模式下,所有節點均可讀寫,資料庫場景下,多主同時讀寫一看就知道會有很多問題,因此官方建議生產系統使用單主模式。

MGR也是基於binlog、relaylog,在資料同步的底層實現上沒什麼不同,因此不用過多擔心使用該技術後的資料安全性。

MGR技術自5.7.17推出,在生產上使用的案例還不是很多,但隨著mysql版本的不斷更新,使用MGR技術的場景也會越來越多,本文就是在利用MGR的基礎上,組合服務發現和埠轉發產品,編寫簡單指令碼,最終實現一個my