高可用性参数
xSQL 配置文件可用于定义与 C API 的 mco_ha_params_t 结构相对应的 SmartEDB 高可用性参数。
“ha_params”部分由一组用大括号括起来的“名称:值”对组成。例如:
ha_params : {
master_ports : [ ":tcp:6100", ":udp:6100"],
master_params : {
...
}
...
connection_strings: [ "192.168.1.100:5000", "192.168.1.102:5000" ],
connect_interval : 1000,
connect_attempts : 5,
...
replica_params : {
mode_flags : [ force_sync ],
...
}
}
主节点的 master_ports 参数定义了一个或多个监听端口,从而支持多通道运行时配置。副本节点的 connection_strings 参数定义了一个 IP 地址列表,用于在副本模式下连接主节点。如果存在连接字符串,xSQL 将在副本模式下初始化自身,并尝试连接由该参数定义的主节点列表。连接尝试的次数通过 connect_attempts 参数定义,尝试之间的间隔时间由 connect_interval 参数的值定义。如果 xSQL 无法连接到 connection_strings 列表中列出的任何主节点且存在 master_ports,则 xSQL 转换为主节点模式。如果 master_ports 未定义,则 xSQL 退出。因此,如果 connection_strings 未定义但 master_ports 存在,则 xSQL 作为主节点运行。
ha_params 参数
以下表格列出了 ha_params 部分的可能选项,以及注释中指定的相应 C API 结构和值:
master_ports
master_ports : [ ":tcp:6100", ":udp:6100" ],
主节点地址(多个)。取决于传输方式,可以是“:tcp:5000”(或仅“5000”)、“:udp:5000”或“:pipe:/tmp/test00”
master_params
master_params : {...}
主参数。对应于 mco_HA_master_params_t 结构体
keep_alive_interval
keep_alive_interval : 1000,
保持活动消息之间的间隔(以毫秒为单位)
trans_window_size
trans_window_size : 10,
事务窗口大小(另见 mco_HA_set_trans_window_size())
connect_timeout
connect_timeout : 2000,
连接超时时间(以毫秒为单位),在主节点和副本节点两侧均使用。(请参阅 mco_HA_attach_master() 和 mco_HA_attach_replica())
connection_strings
connection_strings: [ "192.168.1.100:5000", "192.168.1.102:5000" ],
连接字符串。与传输方式相关,例如“:tcp:192.168.1.100:5000”(或简写为“192.168.1.100:5000”)、“:udp:192.168.1.100:5000”或“:pipe:/tmp/test00”,将尝试以轮询方式连接到这些地址。
connect_interval
connect_interval : 1000,
连接尝试之间的间隔(以毫秒为单位),无符号数
connect_attempts
connect_attempts : 5,
最大连接轮数,无符号
cancel_port
cancel_port : 4321,
用于取消套接字的端口号。若为 0,则取消功能将被禁用。默认值为 9990。
replica_params
replica_params : {...}
副本参数。对应于 mco_HA_replica_params_t 结构(见下文“副本参数”)
switch_mode
switch_mode : "master",
定义初始的高可用性切换模式。您可以选择以下几种模式之一:“自动”(默认值)、“主节点”、“副本节点”或“独立”。
- 自动模式
在“自动”模式下,如果配置文件中同时指定了主节点和副本节点的参数,系统将以副本模式启动,并尝试连接到主节点。如果多次尝试均未成功,系统将自动切换为主节点模式运行。这种模式非常适合希望系统根据实际情况自动调整角色的用户。
- 主节点模式
在“主节点”模式下,无论配置文件中是否有副本参数,服务器都将始终作为主节点运行。这适用于那些希望确保服务器始终担任主节点角色的场景。
- 副本节点模式
在“副本节点”模式下,无论配置文件中是否有主节点参数,服务器都将始终作为副本节点运行。这有助于确保服务器在任何情况下都只作为副本工作。
- 独立模式
在“独立”模式下,服务器会暂时忽略所有高可用性(HA)配置,独立运行。如果您需要暂时关闭 HA 功能,可以选择此模式。
此外,您还可以通过调用 xsql_ha_set_switch_mode()
函数在运行时动态更改切换模式,以适应不同的需求。
主节点参数
ha_params::master_params 部分定义如下:
mode_flags
mode_flags : hotsync,
主模式和选项标志(mco_HA_master_params_t::mode_flags)。标志组合
- mcast_reliable (MCO_HAMODE_MCAST_RELIABLE),
- hotsync (MCO_HAMODE_HOTSYNCH) and
- binevolution (MCO_HAMODE_BINEVOLUTION)
(其他模式会自动启用 - 请见下文)
max_number_of_replicas
max_number_of_replicas : 10,
可连接到主节点的最大副本数(mco_HA_master_params_t::max_number_of_replicas),无符号数
quorum
quorum : 1
高可用性仲裁的初始值
async_databuf_size
async_databuf_size : 100m,
异步复制缓冲区的大小(以字节为单位)(mco_HA_master_params_tsize),无符号整数 (如果不为 0,则启用异步复制模式(MCO_HAMODE_ASYNC)
trans_log_length
trans_log_length : 100,
主节点上存储的最大事务数(mco_HA_master_params_t::trans_log_length),无符号数 (若不为 0,则启用有状态复制(MCO_HAMODE_STATEFUL_REPLICATION)
commit_timeout
commit_timeout : 2000,
发送事务的超时时间(单位:毫秒)(mco_HA_master_params_t::commit_timeout),无符号数
initial_timeout
initial_timeout : 60000,
初始同步超时时间(以毫秒为单位)(mco_HA_master_params_t::initial_timeout),无符号整数
synch_timeout
synch_timeout : 2000,
等待副本确认的超时时间(以毫秒为单位)(mco_HA_master_params_t::synch_timeout),无符号数
detach_timeout
detach_timeout : 1000,
用于分离副本的超时时间(单位:毫秒)(mco_HA_master_params_t::detach_timeout),无符号整数
mcast_address
mcast_address : "224.0.0.1:12345",
多播地址格式为“<IP/主机名>:<端口>”或“<端口>”(mco_HA_master_params_tmcast_port),字符串(启用多播复制模式(MCO_HAMODE_MCAST)
hotsync_msg_objects
hotsync_msg_objects : 100,
热同步期间一次发送的对象数量(mco_HA_master_params_t::hotsync_msg_objects),无符号整数 (仅在热同步模式下才有意义)
hotsync_msg_size
hotsync_msg_size : 100k
热同步期间的最大消息大小(以字节为单位)(mco_HA_master_params_t::hotsync_msg_size),无符号整数 (仅在热同步模式下才有意义)
compression_level
compression_level : 9,
压缩级别:0 - 不压缩;1 - 最高速度,9 - 最高压缩。默认值为 0 。
ssl_params
ssl_params : {...}
特定于主节点的 SSL 设置。有关参数及其默认值的描述,请参阅全局 ssl_params 部分。这些参数会覆盖全局设置。若要继承全局 ssl_params 设置,请将 ssl_params 部分留空。(它们具有与全局部分相同的参数和默认值,但 ca_path 和 ca_file 仅允许在全局部分中使用。)
副本节点参数
ha_params::relica_params 部分定义如下:
mode_flags
mode_flags : [ force_sync ],
模式和选项标志(mco_HA_replica_params_t::mode_flags)。标志组合
- force_master (MCO_HAMODE_FORCE_MASTER)
- force_sync (MCO_HAMODE_FORCE_SYNC)
- MCO_HAMODE_EXPLICIT_WRITE_ACCESS
initial_timeout
initial_timeout : 60000,
初始同步超时时间(以毫秒为单位)(mco_HA_replica_params_t::initial_timeout),无符号整数
commit_timeout
commit_timeout : 2000,
从主节点接收事务数据的超时时间(以毫秒为单位)(mco_HA_replica_params_t::commit_timeout),无符号整数
wait_data_timeout
wait_data_timeout : 5000,
两个连续事务之间最大间隔时间(以毫秒为单位)(mco_HA_replica_params_t::wait_data_timeout),无符号整数
repeat_counter
repeat_counter : 3,
可靠多播中重复提交的最大尝试次数(mco_HA_replica_params_t::repeat_counter),无符号数
mcast_address
mcast_address : "224.0.0.1:12345",
多播地址格式为“<IP/主机名>:<端口>”或“<端口>”(mco_HA_replica_params_tmcast_port),字符串
initial_commit_policy
initial_commit_policy : no_sync,
初始同步期间的磁盘提交策略(mco_HA_replica_params_t::initial_commit_policy):其中之一为:
- sync_flush (MCO_COMMIT_SYNC_FLUSH),
- buffered (MCO_COMMIT_BUFFERED),
- delayed (MCO_COMMIT_DELAYED),
- no_sync (MCO_COMMIT_NO_SYNC)
initial_objs_in_trans
initial_objs_in_trans : 100
初始同步期间事务的对象数量(mco_HA_replica_params_t::initial_objs_in_trans),无符号整数
ssl_params
ssl_params : {...}
副本特定的 SSL 设置。有关参数及其默认值的描述,请参阅全局 ssl_params 部分。这些参数会覆盖全局设置。若要继承全局 ssl_params 设置,请将 ssl_params 部分留空。(它们具有与全局部分相同的参数和默认值,但 ca_path 和 ca_file 仅允许在全局部分中使用。)
batch_commit_length
batch_commit_length : 10,
在副本端可以合并的最大事务数(来自主节点)。默认值为 0(无限制)(有关更多详细信息,请参阅 C 结构体 HA_Params)
batch_commit_bsize
batch_commit_bsize : 100k,
在副本端可以合并的序列化事务的最大总大小(以字节为单位)。此参数可用于防止合并非常大的事务。默认值为 0(无限制)(有关更多详细信息,请参阅 C 结构体 HA_Params)
batch_commit_period
batch_commit_period : 1000,
副本上提交操作的最大延迟时间(以毫秒为单位)。在主服务器发送一定数量的事务然后进入空闲状态,但尚未达到 batch_commit_length 和/或 batch_commit_bsize 参数值的情况下,此参数会发挥作用。batch_commit_period 可确保此类批处理事务在指定的时间段内最终提交。默认值为 1000(1 秒)(有关更多详细信息,请参阅 C 结构体 HA_Params)
compression_level
compression_level : 9,
压缩级别:0 = 不压缩;1 = 最高速度,9 = 最佳压缩。默认值为 0 。
关于批量提交参数的说明
如果 batch_commit_length 和 batch_commit_bsize 均为 0,则不使用批处理提交(无论 batch_commit_period 的值如何)。这是默认行为。