乐趣区

关于数据库:高可用-关于-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/xe…

问题 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 时代的抉择
退出移动版