Galera將死——MySQL Group Replication正式發布
MySQL Group Replication GA
很多同學表示昨天的 從你的全世界路過 畫風不對,好在今天MySQL界終于有大事情發生。當昨天小伙伴們沉浸于雙12的買買買節奏中,孰料遠在美國西海岸的Oracle官方放出了最新的 MySQL 5.7.17 版本。更為重要的是,MySQL Group Replication(下簡稱MGR)終于來了。
在之前的 MySQL的一致性世界 的文章中,Inside君已經表示騰訊基于Paxos的強一致方案雖好,但官方基于Paxos的方案早已箭在弦上,作為第三方去做這樣功能的開發并不見得能有很好的收益。
什么是MGR
MGR準確來說是Oracle官方推出的一種高可用解決方案,其包含下面的特性:
- 將復制的管理操作變得更為自動化,還在Backup + CHANGE MASTER建復制你就out了;
- 通過Paxos協議提供數據庫集群節點數據強一致保證,掃清了MySQL進入金融行業的最后障礙。打臉了淘寶陽振坤老師對于MySQL無法支持強一致的論調;
- 集群間所有節點可寫入,這是很多同學夢寐以求的功能,解決了單個集群的寫入性能,所有節點都能讀寫,不過現實還是有些殘酷。
有小伙伴也把MGR稱為MySQL版的RAC。當然,這兩者架構上還是有很大的差別,MGR是Share Nothing,Oracle RAC是Share Everything。
Galera壽終正寢
熟悉Galera的同學肯定會說,MGR和Gelera非常相像。而已有一部分不怕死的公司在生產環境嘗試用Galera高可用解決方案,甚至是在某些銀行。但他們遇到的問題卻非常嚴重,相信真正在生產環境中使用過Galera的同學必定會同意我的觀點。而MGR的優點在于:
- MySQL官方出品,品控有保障,后續技術有支持;
- MGR使用的Paxos協議,性能更好,即使MGR集群節點數再多,性能也能平穩。解決了Gelera實際只能用三個節點,網絡抖動造成的性能和穩定性問題;
- 支持多個操作系統平臺,而Galera僅支持Linux系統
- 解決網絡分區導致的腦裂問題,提升復制數據可靠性
先看多個主節點(multi-master)下,MGR的性能提升,即多個節點同時讀寫測試[1]:
當參數flow-control-mode設置為disable時,即允許集群節點間存在延遲,這時隨著節點數的不斷增加,MGR集群的性能可有明顯地提升。若為保障讀一致性,則MGR集群性能在5個節點時,幾乎于單MySQL實例性能相當。
小伙伴們最關心的MGR vs Galera[2]:
無需多言,上面的測試結果基本宣告了Galera的死亡。曾經,Galera是款偉大而又引領時代的產品,死于2016年12月12日。
MGR的限制
- 僅支持InnoDB表,并且每張表一定要有一個主鍵,用于做write set的沖突檢測;
- 必須打開GTID特性,二進制日志格式必須設置為ROW,用于選主與write set
- COMMIT可能會導致失敗,類似于快照事務隔離級別的失敗場景
- 目前一個MGR集群最多支持9個節點
- 不支持外鍵于save point特性,無法做全局間的約束檢測與部分部分回滾
- 二進制日志不支持binlog event checksum
MongoDB會不會成為下一個Galera
MGR只是Oracle官方野心的第一步,Inside君更期待未來InnoDB Cluster[3]的GA。從目前的發展路線圖看,未來官方會將其打造成一個分布式的文檔數據庫集群,對手當然是更為強大的MongoDB。但是,一個支持事務,支持行級鎖與MVCC,支持數據強一致保障,基于互聯網最流行與穩定的MySQL的分布式文檔數據庫,又有誰能拒絕這樣的誘惑?
參考文獻
- http://mysqlhighavailability.com/zooming-in-on-group-replication-performance/
- http://mysqlhighavailability.com/performance-evaluation-mysql-5-7-group-replication/
- https://dev.mysql.com/doc/mysql-innodb-cluster/en/
最后,不要錯過Inside君親授的 第3期MySQL網絡班 ,雙12最后一天優惠,6388元。明年2月開課,將會加入MySQL Group Replication的技術介紹與使用。報名咨詢可微信我:82946772。
來自:http://www.innomysql.com/article/25794.html