MySQL高可用之Xenon介绍

0    213    2

Tags:

👉 本文共约5810个字,系统预计阅读时间或需22分钟。

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 方案。

MySQL高可用之Xenon介绍

MHA 活跃度

基于 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 并行回放,大大降低从库延迟。

MySQL高可用之Xenon介绍

Xenon 架构

MySQL高可用之Xenon介绍

  • 自动选主

    基于 Raft(依赖于 GTID)自动选主,数据一致性依赖于增强半同步 Semi-Sync。

  • 故障自动切换

    借助于配置项 leader-start-commandleader-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}]

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

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 数据库开发团队持续维护更新。

Xenon 实现 MySQL 高可用架构 部署篇

基于 Xenon 架构原理,部署 一主两从 架构的 MySQL 高可用集群的实操文档。

MySQL高可用之Xenon介绍

Xenon 架构图

环境信息:

  • Redhat 7
  • MySQL 5.7
  • Xenon 1.0.7
  • XtraBackup 24

*另:Xenon 支持 MySQL 5.6/5.7/8.0 内核,本文以 5.7 为例。

搭建 MySQL 增强半同步复制架构

准备单机 MySQL

准备三台单机 MySQL,安装步骤(略)。

  • db1 (10.10.10.10)
  • db2 (10.10.10.11)
  • db3 (10.10.10.18)

1.2 配置主从复制

配置三台单机 MySQL 主从 复制关系,配置步骤(略)。

1.3 配置增强半同步复

在 db1 服务器上,开启 semi_sync插件。

在 db2 和 db3 服务器上执行并查看结果。

至此,一主两从 增强半同步复制就配置好了,接下来即可使用 Xenon 搭建高可用架构。

使用 Xenon 搭建高可用架构

2.1 环境准备

2.1.1 配置帐号

修改 MySQL 的路径和帐号密码,由 /sbin/nologin 修改为 /bin/bash, 并修改 MySQL 帐号的密码。

说明:MySQL 默认路径为 /bin/bash

为 Xenon 的帐号添加 sudo /usr/ip 权限。

2.1.2 建立互信关系

建立三台服务器之间互信关系。

2.1.3 安装 XtraBackup

2.1.4 安装 Go

2.2 安装 Xenon

https://github.com/radondb/xenon/releases 下载 1.0.7 版本的安装包至服务器。

2.3 配置 Xenon

2.3.1 添加配置文件

添加 db1 的配置文件。

添加 db2 和 db3 的配置文件。以 db2 配置文件为示例。

注意:主机配置文件中leader-start-commandleader-stop-command 参数的值,10.10.10.20/24 和 enp0s3 需要根据实际情况填写。

2.3.2 配置备份环境

在复制环境中创建管理员帐号。

2.3.3 修改权限

2.3.4 修改日志目录

2.4 启用 Xenon

2.4.1 登录

通过 MySQL 帐号登录并启动 Xenon。

2.4.2 添加成员

2.4.3 查看集群状态

查看集群状态。

MySQL高可用之Xenon介绍

查看 MySQL 状态。

MySQL高可用之Xenon介绍

MySQL 高可用部署成功!

总结

在使用 Xenon 搭建高可用集群时,需要注意以下几点:

  1. MySQL 5.7+ GTID 复制结构为基础
  2. 必须有增强半同步复制插件
  3. MySQL 帐号必须是 /bin/bash
  4. Xenon 和 MySQL 必须运行在同一帐号下,一般就是 MySQL
  5. MySQL 帐号在节点之前必须有 SSH 信任
  6. 节点必须安装 Xtrabackup
  7. 必须使用 mysqld_safe 启用 mysql

Xenon 实现 MySQL 高可用架构之日常操作篇

启动集群

启动 MySQL

db3 的启动步骤同 db2。

启动 Xenon

db2、db3 的启动方式同 db1。

注意:当 MySQL 未启动时,启动 Xenon 会自动启动 MySQL。

检查半同步复制

启动时,需要检查半同步复制是否开启。

主要参数:主节点rpl_semi_sync_master_enabled 的状态为 ON,从节点 rpl_semi_sync_slave_enabled 的状态为 ON,表示半同步复制正常开启。

帮助命令

通过 xenoncli 的帮助命令查看可选的命令。

举例说明,查看 cluster 的操作命令帮助。

查看集群

查看状态

MySQL高可用之Xenon介绍

MySQL高可用之Xenon介绍

检查集群一致状态

MySQL高可用之Xenon介绍

检查集群 GTID 状态

MySQL高可用之Xenon介绍

关闭集群

添加/删除节点

添加节点

Xenon 允许添加已经添加过的节点。如果节点已经在集群里面,将直接被忽视,不做任何操作。

删除节点

备份 MySQL 到本地

因 xenoncli 会尝试先删除 backupdir 再 mkdir,故不建议使用 /backup 根目录路径。若使用这种路径,rm 可以成功,mkdir 会失败。

Rebuild 重建

选择最佳状态的从节点,进行 XtraBackup 流式重建,from 参数可指定重建源节点。

  • 作用:重建当前节点 MySQL
  • 场景:节点坏掉需要快速重建

手动 Failover/switchover

手动触发主从切换。

MySQL Stack Info

查看 MySQL 如何调用堆栈信息。Quick Stack 功能速度快,对流程几乎没有影响。

Raft + Operation

不发起选主 enable 是恢复,disable 指该 Xenon 节点只复制。

启动增强半同步检查

我们可以看到半同步的参数是:

若通过 set global 修改半同步的 timeout,将自动订正为无限大;若基于运维临时调整,需要先执行 xenoncli mysql disablechecksemisync 再修改;若运维完,需要恢复自动订正的话,执行 enablechecksemisync

指令分类

查询集群信息:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
MySQL高可用之Xenon介绍后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章
验证码:
请关注本站微信公众号,回复“小麦苗博客”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部