原创:知数堂
上一篇文章,我们详细介绍了 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 版本
参考链接: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 时代的选择
来源:https://www.cnblogs.com/radondb/p/15304298.html
图文来源于网络,如有侵权请联系删除。