我的编程空间,编程开发者的网络收藏夹
学习永远不晚

高可用 | 关于 Xenon 高可用的一些思考

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

高可用 | 关于 Xenon 高可用的一些思考

高可用 | 关于 Xenon 高可用的一些思考

原创:知数堂

上一篇文章,我们详细介绍了 Xenon 实现 MySQL 高可用架构的常用操作。本篇将对关于 Xenon 高可用的一些思考及高频问题进行解答。

问题 1:宕机时 binlog 有 gap 会补日志吗?

Xenon 不会补日志,Xenon 只会从包含最大 GTID 的所有 Follower 中选举一个 Follower,使之成为 Leader 。重新配置主从复制,并把 VIP 切换到新的主节点上。

注意: 如果此时主从有延时,当主库异常,新主上存在还未应用的 Relay Log 时,新主将会被置为 Read-Only 状态,等待 Relay 应用完毕后,才会开启 Read-Write 状态。这样可保障数据强一致性。

问题 2:宕机节点如何恢复?

Xenon 会自动把恢复的节点以 Follower 角色加入集群,也可以用 rebuildme 命令重建。

问题 3:3 个节点允许几个节点宕机?

3 个节点最多允许 1 个节点宕机。

关于节点个数,Xenon 目前不支持 2 节点,最少 3 个节点,最多没有明确上限,可配置超过 13 个节点。但考虑到从节点的数据来自主节点,因此建议配置 3 或 5 个节点。

问题 4:Xenon 主节点宕机后,会出现主从切换异常的场景吗?

除非集群 3 个节点之间网络互相不通,或者超过半数节点的 MySQL 宕机了,否则肯定能完成选主切换。

若出现主从切换异常,请优先排查集群间网络连通情况。

问题 5:Xenon 推荐使用哪个版本,受 MySQL 版本影响吗?

推荐使用 Xenon 最新的 Release 版本,当前是 v1.1.4 版本

  1. 优化了高可用选举逻辑,可更快选出主节点;
  2. 新增按指定角色启动特性,以确保升级 Xenon 期间不会触发 MySQL 主从切换。

参考链接:https://github.com/radondb/xenon/blob/Main/docs/how_xenon_upgrades.md

问题 6:目前 Xenon 支持 MySQL 哪些版本,支不支持 MySQL 8.0?

Xenon 同时支持 MySQL 5.6、5.7、8.0 版本,而 MySQL 官方预计在 2021 年 10 月后将不再维护 5.7 版本。

因此选择使用 Xenon 时,优先推荐 MySQL 8.0 版本。

问题 7:主节点宕机又恢复是如何运行的,会自动加入集群吗?

例如,主节点 a 正常时,a->b,a->c。若 a 宕机了,切换成了b为主节点,则有 b->c。a 恢复后,会自动作为从节点加入集群,则有 b->a。

问题 8:为适配 Xenon,MySQL 哪些参数需要特别设置?

为适配 Xenon 性能,MySQL 部分参数需提前配置,特别是在金融业务应用场景下。以下提供部分 my.cnf 参数配置作为参考。

[client]
socket = /data/mysql/mysql.sock
[mysqld]
federated
basedir = /opt/mysql
datadir = /data/mysql/
socket = /data/mysql/mysql.sock
log-error = /data/mysql/mysql-error.log
slow_query_log_file = /data/mysql/mysql-slow.log
read_only = ON
binlog_format = row
log-bin-index=mysql-bin.index
log-bin=/data/mysql/mysql-bin
innodb_open_files=655360
open_files_limit=655360
core-file

#semi-sync, validate-password, audit-log
plugin-load="semisync_Main.so;semisync_Follower.so"
rpl_semi_sync_Main_enabled=OFF
rpl_semi_sync_Follower_enabled=ON
rpl_semi_sync_Main_wait_no_Follower=ON
rpl_semi_sync_Main_timeout=1000000000000000000

#repl
skip-Follower-start
gtid-mode = ON
enforce-gtid-consistency = ON
Follower_parallel_type = LOGICAL_CLOCK
log-Follower-updates

#relay log
relay_log=/data/mysql/mysql-relay-bin
relay_log_index=mysql-relay-bin.index
Main_info_repository=TABLE
relay_log_info_repository=TABLE

#fixed config
slow_query_log=1
tmp_table_size=32M
tmpdir=/data/mysql
server_id = 197039727
innodb_log_files_in_group=2
skip-name-resolve=1
innodb_ft_max_token_size=84
innodb_use_native_aio=1
innodb_ft_min_token_size=3
interactive_timeout=3600
transaction-isolation=REPEATABLE-READ
character_set_server=utf8mb4
Follower_parallel_workers=8
max_connect_errors=655360
autocommit=1
innodb_flush_method=fsync
sync_Main_info=1000
lower_case_table_names=0
default-time-zone=+08:00
innodb_log_file_size=50331648
log_timestamps=system
log_bin_trust_function_creators=1
wait_timeout=3600
long_query_time=3
expire_logs_days=3

问题 9:Xenon 集群中与时间相关的参数有哪些?

请参考:

{
"log": {
"level": "DEBUG"
},
"server": {
"endpoint": "192.168.0.5:8801"
},
"replication": {
"passwd": "Qc0_499f273e",
"user": "repl_926fb44"
},
"rpc": {
"request-timeout": 1000
},
"mysql": {
"admit-defeat-ping-count": 3,
"admin": "root",
"basedir": "/opt/mysql",
"defaults-file": "/etc/mysql/my.cnf",
"ping-timeout": 1000,
"passwd": "",
"host": "localhost",
"Main-sysvars": "tokudb_fsync_log_period=default;sync_binlog=default;
innodb_flush_log_at_trx_commit=default",
"Follower-sysvars": "tokudb_fsync_log_period=1000;sync_binlog=1000;innodb_
flush_log_at_trx_commit=1",
"port": 3306
},
"raft": {
"leader-start-command": "sudo ip a a 192.168.0.253/32 dev eth0 && sudo
arping -c 3 -A 192.168.0.253 -I eth0",
"election-timeout": 5000,
"leader-stop-command": "sudo ip a d 192.168.0.253/32 dev eth0",
"admit-defeat-hearbeat-count": 5,
"heartbeat-timeout": 1000,
"meta-datadir": "/data/raft/",
"purge-binlog-disabled": true
},
"backup": {
"ssh-host": "192.168.0.5",
"ssh-user": "ubuntu",
"ssh-passwd": "",
"mysqld-monitor-interval": 5000,
"backup-use-memory": "3072M",
"ssh-port": 22,
"xtrabackup-bindir": "/opt/xtrabackup/bin",
"backup-parallel": 2,
"backupdir": "/data/mysql/",
"backup-iops-limits": 100000
}
}

相关阅读

  • Xenon 实现 MySQL 高可用架构 常用操作篇
  • Xenon 实现 MySQL 高可用架构 部署篇
  • Xenon 后 MHA 时代的选择

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

高可用 | 关于 Xenon 高可用的一些思考

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

高可用 | 关于 Xenon 高可用的一些思考

原创:知数堂上一篇文章,我们详细介绍了 Xenon 实现 MySQL 高可用架构的常用操作。本篇将对关于 Xenon 高可用的一些思考及高频问题进行解答。问题 1:宕机时 binlog 有 gap 会补日志吗?Xenon 不会补日志,Xenon 只会从包含最
高可用 | 关于 Xenon 高可用的一些思考
2016-01-28

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

开源 MySQL 高可用工具 Xenon 的简介及架构设计原理。 原创:知数堂| MySQL 高可用的选择在 MySQL(5.5 及以下)传统复制的时代,MHA(Master High Availability)在 MySQL 高可用应用中非常成熟。在
高可用 | Xenon:后 MHA 时代的选择
2017-12-14

如何理解DevOps组件高可用的思路

本篇文章给大家分享的是有关如何理解DevOps组件高可用的思路,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 引言: 以往部署的应用或服务基本都是自成体系不会被其他影响。而在
2023-06-19

关于Node.js中Buffer的一些你可能不知道的用法

前言 在大多数介绍 Buffer 的文章中,主要是围绕数据拼接和内存分配这两方面的。比如我们使用fs模块来读取文件内容的时候,返回的就是一个 Buffer:fs.readFile('filename', function (err, buf
2022-06-04

AmazonAurora的高可用性和可扩展性功能有哪些

Amazon Aurora是一个全托管的关系型数据库服务,具有高可用性和可扩展性功能。以下是Amazon Aurora的高可用性和可扩展性功能:多个可用区部署:Amazon Aurora支持在多个可用区部署数据库实例,确保即使一个可用区发生
AmazonAurora的高可用性和可扩展性功能有哪些
2024-04-09

RAID对于提高数据可用性的重要性

  对于热备用(hotspare)相信使用EMCVNX/CLARiiON存储多年的朋友一定不会感到陌生,只要预先配置了热备用盘,在出现磁盘故障或主动替换的情况下,热备用盘会自动顶上,开始数据重构或复制。但到了新一代VNX,这种既定的工作模式发生了很大变化,同时,这种变化也离不开RAID的发展,下面大家就跟着小编来看看R
RAID对于提高数据可用性的重要性
2024-04-17

基于MFS高可用的分布式存储架构

MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源;分布式文件系统就是把一些分散在多台计算机上的共享文件夹,集合到一个共享文件夹内,用户要访问这些文件夹的时候,只要打开一个文件夹
2023-06-03

Redis:构建高可用性系统的关键技术

Redis,即远程字典服务器(Remote Dictionary Server),是一个开源的高性能键值对存储系统。它以其出色的性能和可靠的高可用性而受到广泛关注和使用。在构建高可用性系统时,Redis扮演着关键的角色。本文将探讨一些使用R
Redis:构建高可用性系统的关键技术
2023-11-07

触发器与数据库高可用性的关系

触发器与数据库高可用性之间存在密切关系,尤其是在实现数据同步和保证数据一致性方面。以下是触发器在数据库高可用性方面的作用:数据同步触发器在数据同步中的作用:触发器可以在数据发生变化时自动执行特定操作,如更新另一个表中的数据或记录日志。这种
触发器与数据库高可用性的关系
2024-09-26

有哪些提高网站可用性的方法

这篇文章主要讲解了“有哪些提高网站可用性的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些提高网站可用性的方法”吧!  通常,网站有三种类型:  第一种网站有杰出的创意和设计。这样的
2023-06-10

编程热搜

目录