基于xenon的mysql 写节点高可用
mysql 部署
我这边使用rocky9系统,系统源自带mysql8.0,我这边直接使用,如果使用的是其他系统,请自行安装mysql8.0或者mysql5.7。
安装mysql8.0
1 | yum install mysql-server -y |
编辑配置文件
1 | cat > /etc/my.cnf < EOF |
注意事项:server-id 需要不同。
启动mysql
1 | systemctl start mysqld |
192.168.1.100执行sql
1 | mysql -h127.0.0.1 |
192.168.1.101 和 192.168.1.102执行sql
1 | mysql -h127.0.0.1 |
Xenon是什么
Xenon [ˈziːnɒn] (https://github.com/radondb/xenon) 是一款由 RadonDB 开发团队研发并开源的新一代 MySQL 集群高可用工具。基于 Raft 协议进行无中心化选主,实现主从秒级切换;基于 Semi-Sync 机制,保障数据不丢失,实现数据强一致性。

Xenon 的优势
相比 MHA,Xenon 的优势如下:
- 多版本内核支持
支持 MySQL 5.6、5.7、8.0 内核版本。
多平台支持
支持物理机、虚拟机/云平台、容器/ Kubernetes 平台部署。
稳定性更好
MySQL 新版本特性兼容。
性能更佳
与 GTID、MTS(并行复制) 结合,并行日志复制、并行日志回放。
架构更简单
不需要管理节点,机器成本更低。
数据更安全
增强半同步复制不会降级为异步,保证数据零丢失,不会存在 MHA 在 GTID 模式下丢数据的风险。
故障修复全自动
Xenon 对于故障节点会自动先自我修复。
节点恢复快
配合 Xtrabackup 等可以实现快速恢复。
操作更简单,维护成本更低
Xenon 部署
1 | git clone https://github.com/radondb/xenon.git |
1 | echo "/usr/local/xenon/xenon.conf.json" >/usr/local/xenon/config.path |
1 | cat > /usr/local/xenon/xenon.conf.json << EOF |
配置后台服务
1 | cat > /usr/lib/systemd/system/xenon.service << EOF |
启动 xenon 后台服务
1 | systemctl daemon-reload |
注: 每个节点都要执行
1 | /usr/local/xenon/xenoncli cluster add 192.168.1.100:8801,192.168.1.101:8801,192.168.1.102:8801 |
1 | /usr/local/xenon/xenoncli cluster status |