原創:知數堂

| MySQL 高可用的選擇
在 MySQL(5.5 及以下)傳統復制的時代,MHA(Master High Availability)在 MySQL 高可用應用中非常成熟,在 MySQL(5.6)及 GTID 時代開啟以后,MHA 卻沒有與新的 MySQL 一起順應時潮,
MHA 由日本 DeNA 公司 youshimaton 開發,他認為在 GTID 環境下 MHA 存在的價值不大,MHA 最近一次發版是 2018 年,現如今使用 MySQL 已離不開 GTID ,無論是從功能、性能角度,還是從維護角度,GTID 能具備更優異的表現,針對資料業務要求不高場景,常使用 GTID+ROW+Semi-Sync 方案,

基于 MHA 和 GTID 發展現狀,為適應 MySQL 版本更新的高可用業務場景,下面介紹一款可替代 MHA 的高可用方案:MySQL + Xenon
| 什么是 Xenon?
Xenon [?zi?n?n] (https://github.com/radondb/xenon) 是一款由 RadonDB 開發團隊研發并開源的新一代 MySQL 集群高可用工具,基于 Raft 協議進行無中心化選主,實作主從秒級切換;基于 Semi-Sync 機制,保障資料不丟失,實作資料強一致性,并結合 MySQL(5.7 及以上版本)并行復制特性,實作 Binlog 并行回放,大大降低從庫延遲,

| Xenon 架構

- 自動選主
基于 Raft(依賴于 GTID)自動選主,資料一致性依賴于增強半同步 Semi-Sync,
- 故障自動切換
借助于配置項 leader-start-command 和 leader-stop-command 呼叫腳本完成故障切換,也可以結合 Consul,ZooKeeper 自由擴展,
- Xtrabackup 備份調度集成
| Xenon 作業原理
結合架構圖,可看出 Xenon 就是基于 Raft + Semi-Sync + GTID 實作的高可用,保證大多數節點接收到資料,
而 Raft 基于心跳管理,如果從節點超時收不到主的心跳,會嘗試發起選舉,若得到超過半數(非 IDLE 節點)的選票,則會當選為主節點,
下面以三節點(一主兩從)Xenon 集群來簡單說明作業原理,
{Leader, [GTID:{1,2,3,4,5}]
{Follower1, [GTID:{1,2,3,4,5}]
{Follower2, [GTID:{1,2,3}]
- 當 Leader 不可用時,Follower1 和 Follower2 立即參與競選成為主節點,
- Xenon 校驗 GTID 值較高的 Follower 成為新主節點,示例中 GTID 值較高的是 Follower1,
- 當 GTID 值最高的 Follower 被選舉成為新主時,將結束競選,示例中 Follower1 成為新主節點后,將會拒絕 Follower2 的選舉,
- 自動完成主從切換,
| Xenon 企業級核心特性
-
一主多從架構,確保金融級強一致性
高可用架構大多采用一主兩從的初始節點架構設計,并通過 MySQL 5.7 版本中的 Semi-Sync 特性實作資料的多副本同步復制,多個從節點的設定將極大的屏蔽掉單點故障帶來的影響,確保至少一個從節點與主節點始終保持資料的完全一致,提供金融級資料強一致性,
-
主副本秒級切換,確保業務高可用
節點之間使用 Raft 協議進行管理,當主節點出現故障不可用時,集群會秒級回應并選出新的主節點(與主節點資料完全同步的從節點),并立即接管讀寫請求,確保業務的連續高可用,這一程序,無需設定后端集群中各節點的角色,一切由系統自動切換,集群中最多可以添加 6 個從節點,主節點可讀可寫,從節點設定為只讀,同時,集群提供兩個 VIP,分別是高可用讀 IP 和高可用寫 IP,讀 IP 可將請求在所有節點之間進行負載分擔,提供讀取性能的同時,也消除了單點故障的影響,提供業務可靠性,寫 IP 則始終指向主節點(Leader),
-
系統自動運維,優化系統空間使用效率
通過對 binlog 日志的保留周期
expire_logs_days的配置(1~4 天),主節點會定期清理不再使用的 binlog 日志,其他從節點已復制完畢,提高系統的空間利用率,
| Xenon 的優勢
相比 MHA,Xenon 的優勢如下:
- 多版本內核支持
支持 MySQL 5.6、5.7、8.0 內核版本,
-
多平臺支持
支持物理機、虛擬機/云平臺、容器/ Kubernetes 平臺部署,
-
穩定性更好
MySQL 新版本特性兼容,
-
性能更佳
與 GTID、MTS(并行復制) 結合,并行日志復制、并行日志回放,
-
架構更簡單
不需要管理節點,機器成本更低,
-
資料更安全
增強半同步復制不會降級為異步,保證資料零丟失,不會存在 MHA 在 GTID 模式下丟資料的風險,
-
故障修復全自動
Xenon 對于故障節點會自動先自我修復,
-
節點恢復快
配合 Xtrabackup 等可以實作快速恢復,
-
操作更簡單,維護成本更低
-
持續更新
Xenon 由 RadonDB 資料庫開發團隊持續維護更新,
相關參考
https://github.com/radondb/xenon/tree/master/docs
https://www.fatalerrors.org/a/separation-of-mha-atlas-for-mysql-high-availability.html
https://github.com/yoshinorim
https://code.google.com/archive/p/mysql-master-ha/
https://dev.mysql.com/doc/refman/5.6/en/replication-gtids-concepts.html
| 預告
下一篇 Xenon 主題文章,搭建一套 Xenon+MySQL 高可用架構集群,
關于 RadonDB
RadonDB 開源社區是一個面向云原生、容器化的資料庫開源社區, 為資料庫技術愛好者提供圍繞主流開源資料庫(MySQL、PostgreSQL、Redis、MongoDB、ClickHouse 等)的技術分享平臺,并提供企業級 RadonDB 開源產品及服務,
目前 RadonDB 開源資料庫系列產品已被 光大銀行、浦發硅谷銀行、哈密銀行、泰康保險、太平保險、安盛保險、陽光保險、百年人壽、安吉物流、安暢物流、藍月亮、天財商龍、羅克佳華、升哲科技、無錫匯跑體育、北京電信、江蘇交通控股、四川航空、昆明航空、國控生物 等上千家企業及社區用戶采用,
RadonDB 可基于云平臺與 Kubernetes 容器平臺交付,不僅提供覆寫多場景的資料庫產品解決方案,而且提供專業的集群管理和自動化運維能力,主要功能特性包括:高可用主從切換、資料強一致性、讀寫分離、一鍵安裝部署、多維指標監控&告警、彈性擴容&縮容、橫向自由擴展、自動備份&恢復、同城多活、異地災備 等,RadonDB 僅需企業及社區用戶專注于業務層邏輯開發,無需關注集群高可用選型、管理和運維等復雜問題,幫助企業及社區用戶大幅度提升業務開發與價值創新的效率!
GitHub:
https://github.com/radondb
微信群: 請搜索添加群助手微信號 radondb

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/286063.html
標籤:MySQL
上一篇:mysql-jdbc
下一篇:MYSQL資料庫重新初始化
