高可用 | Xenon:后 MHA 时代的选择

2021-06-07  本文已影响0人  RadonDB

原创:知数堂

| 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-commandleader-stop-command 调用脚本完成故障切换,也可以结合 Consul,ZooKeeper 自由扩展。

| 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}]

  1. 当 Leader 不可用时,Follower1 和 Follower2 立即参与竞选成为主节点。
  2. Xenon 校验 GTID 值较高的 Follower 成为新主节点,示例中 GTID 值较高的是 Follower1。
  3. 当 GTID 值最高的 Follower 被选举成为新主时,将结束竞选。示例中 Follower1 成为新主节点后,将会拒绝 Follower2 的选举。
  4. 自动完成主从切换。

| Xenon 企业级核心特性

| Xenon 的优势

相比 MHA,Xenon 的优势如下:

支持 MySQL 5.6、5.7、8.0 内核版本。

相关参考

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

上一篇 下一篇

猜你喜欢

热点阅读