即將開源的新一代MySQL高可用組件:MySQL Plus
在基于MySQL傳統(tǒng)復制的時代(MySQL版本低于5.5),MHA在MySQL高可用中可以說是獨領(lǐng)風騷。 在MySQL 5.6及GTID的出現(xiàn)后,MHA在這方面就顯的不那么給力了,和MHA作者交流,作者基本放棄對該軟件的維護了,MHA作者目前在Facebook就職,自身也沒再使用MHA,他也認為在GTID環(huán)境下MHA存在的價值不大,不過如果你還在使用傳統(tǒng)復制,還是可以考慮使用MHA做主從的高可用(太老了,建議升級)。
下面,我們圍繞以下幾點來討論一下:
1、在MySQL 5.7 后為什么不需要MHA;
2、MySQL Plus 是什么,能解決什么問題?
3、MySQL Plus看他們?nèi)绾胃愣ń鹑谥С郑?/span>
MySQL 5.7后為什么不需要MHA
基于MySQL 5.7 GTID復制已經(jīng)成熟,另外基于MySQL5.7的增強半同步性進一步提升。在使用MySQL 5.7的復制可以使用: MySQL 5.7+GTID+增強半步, 在該結(jié)構(gòu)中, 不存在丟數(shù)據(jù)的問題, 即MHA在這個結(jié)構(gòu)基本失去了存在的意義。
但使用: MySQL 5.7+GTID+增強半步,也意味著新的知識,可能需要DBA同學們也要更新一下知識。而且在MySQL 5.7中引入binlog group commit, 又是對復制的一個加速。
所以說MySQL5.7 在復制完整性及性能上都有較大地提升,建議沒升級的同學盡快升級了。
官方對MySQL 5.7的測試傳送門:https://www.mysql.com/why-mysql/benchmarks/
MySQL Plus是什么,能解決什么問題
在3306π北京活動中 青云的蒙哲分享了青云RDS中高可用組件: MySQL Plus。
MySQL Plus是基于一套Raft構(gòu)建的MySQL中自動選主及維護主從的套件,整體結(jié)構(gòu)如下:
在該結(jié)構(gòu)中Xenon之間會進行通信,在該結(jié)構(gòu)中推薦三個節(jié)點的MySQL構(gòu)建復制,聽作者講也支持兩個節(jié)點的MySQL構(gòu)建集群。
在MySQL Plus主要解決:
1、集群切換的強一致性(從上面架構(gòu)看,更多的依賴于MySQL增強半同步,MySQL Plus在控制切換時,會做復制完成校驗,從而且保證數(shù)據(jù)一致)
2、主從秒級別切換
3、無中心化自動選主
MySQL Plus看他們?nèi)绾胃愣ń鹑诃h(huán)境
MySQL Plus 可以簡單的理解是一個MySQL 5.7 GTID增強半同步復制的高可用管理組件。 在MySQL半同步配置方面,為了支持金融業(yè)務,青云給的配置如下:
-
rpl_semi_sync_master_wait_no_slave=ON
-
rpl_semi_sync_master_timeout=1000000000000000000
-
rpl_semi_sync_master_wait_point=AFTER_SYNC
看到這個配置我才想明白為什么他們的建議是三個節(jié)點,在rpl_semi_sync_master_timeout配置上,可以說不允許退化到異步復制, 與RadonDB負責人交流,在MySQL Plus架構(gòu)中主節(jié)點上至少要求一個Slave給半同步應答,所以2個節(jié)點對架構(gòu)的穩(wěn)定性也是一個保證。
另外在金融環(huán)境中,作者推薦所有請求都在主庫上完成,免得存在復制延遲造成交易數(shù)據(jù)異常。
在金融架構(gòu)中,青云也提供了一套基于MySQL Plus之上構(gòu)建建的分庫分表機制, 基于MySQL的事務強一致性約,在該平臺支持OLTP和OLAP更感覺有點NewSQL的感覺。
下面是官方給的一個總結(jié):
重大消息:
MySQL Plus 官方要開源了,希望通過MySQL Plus給MySQL 5.7 GTID復制提供一個新的高可用方案。