Galera將死——MySQL Group Replication正式發布

fvsw0298 7年前發布 | 23K 次閱讀 MySQL 數據庫服務器

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

 

 本文由用戶 fvsw0298 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!