#分布式自动选主配置
# 自动选主开关
自动选主开关由HA_ELECTION_ENABLED参数控制,默认值为false,即自动选主默认处于关闭状态,如需开启自动选主功能则需将该参数设置为true,分布式集群部署时会默认打开自选开关。
HA_ELECTION_ENABLED参数支持在线调整,在主备节点上执行如下语句进行查看和修改:
-- 查看参数HA_ELECTION_ENABLED值
SHOW PARAMETER HA_ELECTION_ENABLED;
-- 修改参数HA_ELECTION_ENABLED值
ALTER SYSTEM SET HA_ELECTION_ENABLED=TRUE;
# 自动选主的心跳时间
自动选主功能依赖如下两个时间参数:
- 心跳超时时间HA_ELECTION_TIMEOUT
- 发送心跳的周期HA_HEARTBEAT_INTERVAL
当超过HA_ELECTION_TIMEOUT设置时间备节点仍未收到心跳时,备节点自动发起选举。
在配置文件中,在节点对应的group.node.config
配置域下新建参数ha_election_timeout
及ha_heartbeat_interval
并设为规划的值。
Note:
上述两个时间参数可以不指定,则系统按照默认值配置,HA_ELECTION_TIMEOUT值为9,HA_HEARTBEAT_INTERVAL值为3,单位均为秒。
HA_ELECTION_TIMEOUT参数和HA_HEARTBEAT_INTERVAL参数支持在线调整,用户可以根据自身业务系统情况进行适当设置。
同一个组内节点的HA_ELECTION_TIMEOUT、HA_HEARTBEAT_INTERVAL和HA_ELECTION_ENABLED参数均应保持一致,否则可能出现异常。
部署完成后,如需修改上述两个时间参数可执行ALTER SYSTEM语句,直接修改toml配置文件无效。
[[group.node]]
data_path = "/data/yashan/yasdb_data"
hostid = "host0001"
role = 1
[group.node.config]
ha_election_timeout = 9
ha_heartbeat_interval = 3
部署完成后,用户可以连接到具体节点实例上,通过以下语句查看或修改该节点的参数值:
-- 查看心跳超时时间
SHOW PARAMETER HA_ELECTION_TIMEOUT
NAME VALUE
------------------------- ---------
HA_ELECTION_TIMEOUT 9
-- 查看心跳发送周期
SHOW PARAMETER HA_HEARTBEAT_INTERVAL
NAME VALUE
------------------------- ---------
HA_HEARTBEAT_INTERVAL 3
-- 修改心跳超时时间
ALTER SYSTEM SET HA_ELECTION_TIMEOUT=10;
-- 使用yasboot工具批量修改心跳超时时间
$ yasboot group config set --key HA_ELECTION_TIMEOUT --value 10 --cluster yashandb --group-id 1
# 自动降备功能开关
自动降备用于控制主节点未收到多数派备节点心跳响应时是否进行主动降备,通过HA_ELECTION_LEADER_LEASE_ENABLED参数配置开关,该开关只对主节点生效,用户可自行修改配置。
该参数默认值为FALSE,即不开启。
当参数设置为TRUE时,下述情况中主节点会在心跳超时时间(HA_ELECTION_TIMEOUT)后自动降备:
- 处于最大保护模式下,主节点收到备节点心跳数 <
QUORUM_SYNC_STANDBY中的syncNum
。 - 处于非最大保护模式下,主节点未收到多数
(N/2 +1)
备节点心跳。
其中N为所有节点(包含主节点)的数量,syncNum为用户定义的同步备数量。
-- 查看是否开启主节点自动降备功能
SHOW PARAMETER HA_ELECTION_LEADER_LEASE_ENABLED;
NAME VALUE
--------------------------------- ---------
HA_ELECTION_LEADER_LEASE_ENABLED FALSE
-- 开启主节点自动降备功能
ALTER SYSTEM SET HA_ELECTION_LEADER_LEASE_ENABLED=TRUE;
# 节点优先级功能
节点的优先级,值越大表示其节点优先级越高,通过HA_ELECTION_PRIORITY参数配置数值。开启自动选主的场景下,节点的优先级越高,在保障数据安全的前提下会更优先成为主节点。当节点优先级为0时,该节点不会发起选举,即不会通过自动选主机制成为下一任主节点。支持在线修改该参数的配置,用户可根据自身业务系统情况自行设置。
该参数默认值为1。
-- 查看主备的节点优先级值
SHOW PARAMETER HA_ELECTION_PRIORITY;
NAME VALUE
--------------------------------- ---------
HA_ELECTION_PRIORITY 1
-- 修改主备的节点优先级值
ALTER SYSTEM SET HA_ELECTION_PRIORITY=2;
# 自动换主功能开关
自动换主用于控制主库发现高优先级备库时是否进行主备切换,通过HA_ELECTION_AUTO_PRIMARY_SWITCH参数配置开关,该开关只对主库生效。支持在线修改该参数的配置,用户可根据自身业务系统情况自行设置。
该参数默认值为FALSE,即不开启。
当参数设置为TRUE时,主库每隔一定时间会检测是否存在更高优先级的节点,如存在则进行主备切换。间隔时间默认为60s,如需调整该间隔时间请联系我们的技术支持处理。
-- 查看是否开启主库自动换主功能
SHOW PARAMETER HA_ELECTION_AUTO_PRIMARY_SWITCH;
NAME VALUE
------------------------------------ ---------
HA_ELECTION_AUTO_PRIMARY_SWITCH FALSE
-- 开启主库自动换主功能
ALTER SYSTEM SET HA_ELECTION_AUTO_PRIMARY_SWITCH=TRUE;
HA_ELECTION_TIMEOUT、HA_ELECTION_AUTO_PRIMARY_SWITCH、HA_ELECTION_PRIORITY、HA_HEARTBEAT_INTERVAL以及HA_ELECTION_LEADER_LEASE_ENABLED参数支持在线调整,用户可以根据自身业务系统情况进行适当设置。