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

原创:知数堂

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

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

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

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

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

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

如果出现主备倒换异常,请先检查集群间的网络连通性。

[En]

If there is a master-slave switching exception, please check the network connectivity between clusters first.

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

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

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

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

为适配 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

请参考:

{
"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
}
}

Original: https://www.cnblogs.com/radondb/p/15304298.html
Author: RadonDB
Title: 高可用 | 关于 Xenon 高可用的一些思考

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/508138/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • JavaWeb核心篇(2)——Request和Response

    JavaWeb核心篇(2)——Request和Response 上篇文章中提及到了Servlet,在Servlet中我们主要继承了HTTPServlet类,在HTTPServlet…

    数据库 2023年6月14日
    097
  • day01-需求分析和系统设计

    对传输数据的分析: 因为在通讯的时候信息的种类和信息比较多,如果使用文本的方式来传递数据,那么服务器拿到信息的时候对其进行拆解会很麻烦。因此使用对象的方式来进行数据的传输(同时使用…

    数据库 2023年6月11日
    075
  • SQL的约束

    概念:约束是作用于表中的字段以限制表中数据存储的规则 [En] concept: constraints are rules that act on fields in a tab…

    数据库 2023年5月24日
    092
  • 微信登录前端开发指南

    使用场景 微信公众号内嵌H5网页调用微信登录 在微信浏览器中的网页唤起微信登录界面 详情可以查阅微信登录官方文档 链接地址 功能思路 后台先在微信给开发者提供的测试账号平台上创建应…

    数据库 2023年6月11日
    070
  • MySQL 笔记

    情景一数据库概述基本术语DB : 数据库 ( Database )它是根据数据结构组织、存储和管理数据的仓库。它被视为电子档案柜,用户可以对文件中的数据进行添加、删除、修改、查找等…

    数据库 2023年5月24日
    076
  • tomcat线程池

    tomcat线程池和普通的线程池设计上有所区别,下面主要来看看它是如何设计的 tomcat中线程池的创建 <span>org.apache.tomcat.util.ne…

    数据库 2023年6月16日
    083
  • jenkins-配置python

    1. 进入”Dashboard”界面,点击左侧”构建执行状态” 2. 点击列表设置图标 3. 勾选”Environmen…

    数据库 2023年6月14日
    058
  • MySQL快速创建800w条测试数据表&深度分页

    MySQL快速创建800w条测试数据表&深度分页 如果在普通表格中插入条,效率太低,但内存表的插入速度很快,可以先创建内存表,插入数据,然后再导入到普通表格中。 [En] …

    数据库 2023年5月24日
    0104
  • Java并发编程之AQS以及源码解析

    文章目录 概览 实现思路 实现原理 * 源自CLH锁 AQS数据模型 CAS操作 主要方法 * 自定义同步器的实现方法 AQS定义的模板方法 源码解读 * 等待状态释义 AQS获取…

    数据库 2023年6月6日
    072
  • sqlserver 分列

    sql server 数据库中某张表(Person)的数据信息是: Address 1 平山花园-4单元-12幢-203 2 香山花园-3单元-22幢-304 现在有需求是,将地址…

    数据库 2023年6月11日
    072
  • Java面试题(五)–Rabbits

    1、什么是MyBatis? 1、Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建…

    数据库 2023年6月16日
    093
  • 如何成为一名开发人员——第 2 部分:非技术技能

    在第一部分中,我提到了成为开发人员所涉及的技术技能。现在我要谈一些非技术性的技能。 4 学会沟通 编程归根结底是将人类思想转化为机器逻辑的艺术。因此,一半的工作在于理解和表达人类思…

    数据库 2023年6月14日
    091
  • JVM-堆

    堆 JAVA技术交流群:737698533 堆核心概述 此内存区域的唯一目的就是存放对象实例 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区在JV…

    数据库 2023年6月16日
    0101
  • 条件控制

    1. 顺序结构 java代码顺序执行 2. 选择结构 if语句 格式 if(结果为booblean类型的表达式){ 语句体; } if(结果为booblean类型的表达式){ 语句…

    数据库 2023年6月14日
    049
  • Shell文件属性的判断与比较

    Shell支持对文件属性的判断,常用的文件属性操作符很多,如下表所示。更多文件属性操作符可以参考命令帮助手册man test [root@centos7&#xFF5E;]#…

    数据库 2023年6月14日
    082
  • MySQL 安全管理

    权限表 MySQL 服务器通过权限表来控制用户对数据库的访问,由 mysql_install_db 脚本初始化,MySQL 会根据这些权限表的内容为每个用户赋予相应的权限 user…

    数据库 2023年5月24日
    068
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球