基于物理复制的主备集群容灾
注意
物理复制为实验性特性,功能和行为可能在后续版本中调整,请谨慎在生产环境使用。
概述
平凯数据库物理复制用于在多个平凯数据库集群之间建立基于日志的主备复制关系。与逻辑复制相比,物理复制直接复制底层数据,适合主备容灾、主备切换和故障恢复场景。
物理复制支持同城双中心部署,提升集群级高可用能力。该能力支持跨集群同步复制(RPO = 0),也支持异步复制模式以满足异地容灾需求。
核心指标参考(实际以网络、拓扑和负载为准):
- 故障自动切换时间 (RTO):< 15 秒
- 演练切换时间 (RTO):< 30 秒
- 同步复制数据丢失量 (RPO):0
- 异步复制数据丢失量 (RPO):< 5 秒
- 写入延迟:同步复制会增加集群的写入延迟,延迟的估计值为“本地落盘时间 + 跨集群网络一次 RTT + 远端落盘时间”。异步复制不会增加写入延迟。
基本概念
阅读本文时,建议先区分以下两组概念:
primary/standby:表示集群当前的服务角色。primary:可读可写。standby:只读,不接受普通业务写入。
source/replica:表示一对物理复制集群之间的数据流向。source:上游,负责向下游提供日志和快照。replica:下游,负责接收并应用复制数据。
在最常见的一主一备场景中,primary 通常也是 source,standby 通常也是 replica。但在链式复制拓扑中,一个中间 standby 集群既可以是上游链路的 replica,也可以是下游链路的 source。
使用限制
- 物理复制当前不支持在
standby集群上部署 TiFlash。primary集群可以部署 TiFlash,但在计划内切换前,需要删除旧primary上的所有 TiFlash 副本。 - 所有参与复制的集群中,最多只能存在一条同步保护模式(
MAXIMUM_PROTECTION或MAXIMUM_AVAILABILITY)的复制链路,且只能在primary与standby之间。异步保护模式(MAXIMUM_PERFORMANCE)不受此限制。 standby集群必须为空(不能包含用户创建的数据库或表)。- 复制链路两端的所有 TiKV 节点必须启用相关配置项(见使用前准备)。
- 客户端需能够处理 TiDB 在部分切换步骤中的自动重启,并能完成重连。
使用前准备
在开始前,请确认以下条件均满足:
- 集群的 TiDB、TiKV、PD 已全部升级到支持物理复制的版本。
standby集群未部署 TiFlash。standby集群必须为空(不能包含用户创建的数据库或表)。- 复制链路两端的所有 TiKV 节点必须启用相关配置项(见下表)。
replica集群需要能够连接source集群的某个 TiDB SQL 地址。SOURCE_USER对应的账号必须在source集群中拥有SUPER权限。- 复制链路两端的集群必须能互相访问对方的 PD/TiKV 服务。
- 客户端需能够处理 TiDB 在部分切换步骤中的自动重启,并能完成重连。
- 如果主备集群的 TiDB 内存、TiKV 节点数量或整体资源规格不一致,建议提前阅读物理复制场景下的系统变量检查。
- 在开启 TLS 的集群间创建物理复制链路需要两个集群证书互信,包括集群证书和 TiDB SQL 证书。
下表所列 TiKV 配置项均为必需项,且要求启用。
| 配置项 | 作用 | 备注 |
|---|---|---|
replicator.enable | 启动 TiKV 上的 replicator 服务 | 必须开启 |
raft-engine.enable | 启用 raft-engine | 必须开启 |
raft-engine.enable-log-archive | 开启 raft-engine 日志归档 | 必须开启 |
raft-engine.archive-retention-time | 设置日志归档保留时间 | 必须配置,且大于预期的网络中断时长;建议配置为 48h,但需综合评估磁盘容量是否能承载该时长的日志写入量 |
resolved-ts.enable | 启用 resolved-ts | 必须开启(standby 集群快照读和 FLASHBACK 依赖此项) |
resolved-ts.advance-ts-interval | resolved-ts 推进间隔 | 必须配置;物理复制场景建议设置为 1s,间隔越短快照读延迟越低 |
可通过以下 SQL 检查 TiKV 配置(示例):
SELECT `instance`, `key`, `value`
FROM information_schema.cluster_config
WHERE `type` = 'tikv'
AND `key` IN (
'replicator.enable',
'raft-engine.enable',
'raft-engine.enable-log-archive',
'raft-engine.archive-retention-time',
'resolved-ts.enable',
'resolved-ts.advance-ts-interval'
)
ORDER BY `instance`, `key`;保护模式
物理复制支持三种保护模式:
| 模式 | 名称 | 含义 | 说明 |
|---|---|---|---|
MAXIMUM_PERFORMANCE | 最大性能 | 异步复制 | 提交不等待 standby ACK,优先保证吞吐。 |
MAXIMUM_PROTECTION | 最大保护 | 同步复制 | 提交等待 standby ACK,不自动降级。若 standby 故障,primary 会阻塞写入。 |
MAXIMUM_AVAILABILITY | 最大可用 | 同步复制,可自动降级 | 提交等待 standby ACK;若阻塞超过 DEGRADE_TIMEOUT,自动降级到 MAXIMUM_PERFORMANCE。 |
DEGRADE_TIMEOUT 定义了 primary 在同步复制下等待 standby ACK 的超时阈值。超过该时间后,系统为保证业务连续性会自动降级为异步。该参数格式为正的 duration 字符串,如 '30s'、'1m'、'2h',最小为 1s。
自动降级后的运维决策
当 MAXIMUM_AVAILABILITY 模式发生自动降级后:
- 复制模式变为
MAXIMUM_PERFORMANCE,此时 RPO 不再为 0。 - 可通过
INFORMATION_SCHEMA.LR_STATUS_GLOBAL的REPLICATION_MODE列确认当前实际复制模式。 - 自动降级后仍可执行计划内切换(
SWITCHOVER),但数据可能存在延迟。 - 如需恢复同步复制,需在
standby恢复正常后执行ADMIN ALTER LOG REPLICATION将保护模式重新设置为MAXIMUM_AVAILABILITY或MAXIMUM_PROTECTION。
创建物理复制
语法
ADMIN CREATE LOG REPLICATION <name>
SOURCE_HOST = '<source_tidb_host>'
SOURCE_PORT = <source_tidb_port>
SOURCE_USER = '<source_tidb_user>'
SOURCE_PASSWORD = '<source_tidb_password>'
[PROTECTION_MODE = MAXIMUM_PERFORMANCE | MAXIMUM_PROTECTION | MAXIMUM_AVAILABILITY]
[DEGRADE_TIMEOUT = '<duration>']
[DETACHED];参数说明
| 参数 | 说明 |
|---|---|
name | 复制链路名称,在参与该链路的所有集群中必须唯一 |
SOURCE_HOST | source 集群的 TiDB SQL 地址 |
SOURCE_PORT | source 集群的 TiDB SQL 端口 |
SOURCE_USER | source 集群中具备 SUPER 权限的账号 |
SOURCE_PASSWORD | SOURCE_USER 对应的密码 |
PROTECTION_MODE | 保护模式,未指定时默认为 MAXIMUM_PERFORMANCE |
DEGRADE_TIMEOUT | 降级超时时长,仅当 PROTECTION_MODE = MAXIMUM_AVAILABILITY 时需指定 |
DETACHED | 异步创建模式。使用此选项时,语句立即返回一个 WORKFLOW_ID,不会阻塞等待初始化完成。可通过 INFORMATION_SCHEMA.LR_WORKFLOW_HISTORY_GLOBAL 查询工作流状态 |
ADMIN CREATE LOG REPLICATION 必须在将要成为 standby 的集群上执行。
为了避免在创建阶段影响 primary 写入,建议创建时不设置保护模式(使用默认的 MAXIMUM_PERFORMANCE),待初始化完成后再通过 ADMIN ALTER LOG REPLICATION 切换。
若确需设置为 MAXIMUM_AVAILABILITY,必须同时设置 DEGRADE_TIMEOUT。
创建后的行为
创建成功后,目标集群会进入 standby 模式:
- 普通写请求会被禁止。
- 一部分后台任务(如统计信息自动更新)会被阻塞,这些后台任务的功能完全由
primary日志同步来实现。 standby集群的 TiKV 会启动日志复制组件连接上游,上游集群通过 region learner 将数据发送到下游。- 状态可通过
INFORMATION_SCHEMA.LR_*系统视图查看。若INITIALIZING_PROGRESS停滞,请检查网络连通性及 TiKVreplicator日志。
使用 DETACHED 异步创建
当使用 DETACHED 选项创建时:
- 语句立即返回,输出结果中包含
WORKFLOW_ID。 - 后台继续执行初始化流程。
- 通过以下 SQL 查询工作流执行状态:
SELECT WORKFLOW_ID, WORKFLOW_TYPE, WORKFLOW_STATE, WORKFLOW_STATE_INFO
FROM information_schema.LR_WORKFLOW_HISTORY_GLOBAL
WHERE WORKFLOW_ID = '<returned_workflow_id>';- 当
WORKFLOW_STATE变为COMPLETED时,表示初始化完成,可继续后续操作。
修改和管理复制链路
除 CREATE、ACTIVATE STANDBY、SWITCHOVER AS PRIMARY 外,其余管理命令可以在 primary 集群以及复制链路的直接上游/下游集群执行。
修改保护模式
ADMIN ALTER LOG REPLICATION <name>
PROTECTION_MODE = MAXIMUM_PERFORMANCE | MAXIMUM_PROTECTION | MAXIMUM_AVAILABILITY
[DEGRADE_TIMEOUT = '<duration>'];注意
DEGRADE_TIMEOUT仅在PROTECTION_MODE = MAXIMUM_AVAILABILITY时生效。设置PROTECTION_MODE = MAXIMUM_AVAILABILITY时必须同时指定DEGRADE_TIMEOUT。
当从异步模式切换到同步模式时,系统会先等待 checkpoint lag 低于 tidb_alter_sync_max_lag_seconds 变量指定的阈值(默认 10 秒),然后再执行切换。
可通过设置以下系统变量控制切换行为:
| 变量名 | 作用域 | 默认值 | 说明 |
|---|---|---|---|
tidb_alter_sync_max_lag_seconds | SESSION | GLOBAL | 10 | ALTER LOG REPLICATION 切换到同步复制时允许的最大 checkpoint lag(秒)。取值范围:[0, 2147483647] |
切换 source
ADMIN ALTER LOG REPLICATION <name> CHANGE SOURCE TO <new_source_cluster_id>;限制如下:
- 仅支持在当前复制链路为
MAXIMUM_PERFORMANCE时执行。 CHANGE SOURCE与其他ALTER选项互斥,不能在同一条语句中同时修改保护模式或降级超时。- 新
source不能是当前source,也不能是replica自身。 - 新
source不能位于当前replica的下游子树中(防止形成环)。 - 复制处于
PAUSED状态时无法执行。
提示:
CHANGE SOURCE主要用于链式复制拓扑调整。执行过程中可能触发primary短暂禁写,建议在业务低峰期操作。
暂停复制
ADMIN PAUSE LOG REPLICATION <name>;暂停后:
standby停止复制,状态变为PAUSED。- 若原本为同步复制,系统会先将同步复制切换为异步复制再进入暂停。
恢复复制
ADMIN RESUME LOG REPLICATION <name>;恢复后:
- 系统会以
MAXIMUM_PERFORMANCE启动恢复流程;如需同步复制,请再执行ADMIN ALTER LOG REPLICATION调整保护模式。
删除复制
ADMIN DROP LOG REPLICATION <name>;删除后,系统会清理 primary 上的复制状态和相关元数据。若原本为同步复制,系统会先将复制切换为异步复制再执行 DROP,以避免同步复制在缺少 standby ACK 时导致业务阻塞。被 DROP 的集群(旧 standby)仍处于 standby 状态,如需退出 standby 请执行 ADMIN ACTIVATE STANDBY MODE = FLASHBACK。
主备切换
计划内切换(Switchover)
支持从 standby 侧或 primary 侧发起计划内切换。
从 standby 侧发起
在当前 standby 集群执行:
ADMIN SWITCHOVER AS PRIMARY;此语句将当前 standby 集群提升为 primary,无需指定目标集群 ID。执行此语句时,系统会自动与原 primary 协调完成角色切换。
指定新 primary
执行以下语句将指定的 standby 集群提升为 primary:
ADMIN SWITCHOVER PRIMARY TO <new_primary_cluster_id>;切换限制与建议
- 仅支持相邻
primary/standby之间的切换。 - 切换前复制链路不能处于暂停状态。
- 建议先确认目标集群在
INFORMATION_SCHEMA.LR_CLUSTER_STATUS_GLOBAL中的SWITCHOVER_READY = 'YES'。 - 切换过程中,系统会自动完成
primary禁止写入、追平数据和primary/standby角色切换。期间 TiDB 节点会自动重启。 - 切换完成后,请更新业务侧的 VIP、DNS 或连接串。建议在业务低峰期操作。
- 切换完成后,建议按物理复制场景下的系统变量检查复核新
primary上资源相关全局系统变量的值。
计划外切换(Failover)
当确认 primary 集群已断开连接时,在当前 standby 集群执行:
-- 模式一:回退到一致性快照点
ADMIN ACTIVATE STANDBY MODE = FLASHBACK;
-- 模式二:强制提交已接收数据(仅限同步复制,可确保 RPO = 0)
ADMIN ACTIVATE STANDBY MODE = FORCE_COMMIT;FLASHBACK 模式
将 standby 的数据回退到一个一致性快照点后激活为 primary。适用于:
- 异步复制场景
- 同步复制场景但无法确认原
primary状态 - 已在原
primary上执行过ADMIN DROP LOG REPLICATION
FORCE_COMMIT 模式
强制提交 standby 已接收的所有数据后激活为 primary。使用前必须满足:
- 当前复制为同步复制(
MAXIMUM_PROTECTION或MAXIMUM_AVAILABILITY) - 原
primary尚未执行ADMIN DROP LOG REPLICATION - 已确认原
primary已彻底停机或网络隔离
警告:
在执行
ACTIVATE STANDBY前,必须确认原primary已彻底停机或网络隔离,否则可能导致“脑裂”现象,造成不可逆的数据冲突和不一致。若无法确认,应先在原primary执行ADMIN DROP LOG REPLICATION,但此时只能使用FLASHBACK。
将旧 primary 重新接回(REINSTATE)
在 MAXIMUM_PROTECTION 模式下完成 ACTIVATE STANDBY(原 standby 已切换为新的 primary)后,如需将原 primary 故障恢复并重新接回新的 primary,可执行 REINSTATE。在该模式下,旧 primary 故障恢复时因缺少 standby ACK 导致 TiDB 无法启动。此操作只能通过 pd-ctl 在旧 primary 集群对应的 PD 上发起。
通过 pd-ctl 在旧 primary 集群对应的 PD 上发起:
pd-ctl -u http://<old-primary-pd-host>:2379 log-replication reinstate <new-primary-id> <new-log-replication-name>示例:
pd-ctl -u http://127.0.0.1:2379 log-replication reinstate 1024 dr_reinstateREINSTATE 会把旧 primary 转成新 primary 的 standby,并建立新的复制链路。
primary 启动检查与只读保护
**注意:**该功能默认未启用。需配置
log-replication.primary-start-check-timeout后才会执行启动检查。
primary 集群启动时,如果配置了启动检查超时时间,系统会检查直接相连的 standby 的状态。当同时满足以下条件时,primary 可能会自动进入只读保护状态:
- 直接相连的
standby已切换source - 在
primary启动前,primary上存在异步复制链路
进入只读保护后,primary 会拒绝写操作以防止数据不一致。
解除只读保护
- 确认复制链路已恢复正常。可通过
INFORMATION_SCHEMA.LR_STATUS_GLOBAL查看REPLICATION_STATE是否为REPLICATING,以及REPLICATION_MODE是否与期望的保护模式一致。 - 通过
pd-ctl解除只读保护:
pd-ctl -u http://<pd-host>:2379 log-replication read-only set falsestandby 集群的快照读
在 standby 模式下,TiDB 提供快照读(Snapshot Read),其可用时间戳以 CHECKPOINT_TS 为准。
- 实时性:读取的是
standby集群本地已应用的最新数据,可能落后于primary。 - 一致性:同一条 SQL 语句内具备一致性快照。
- 快照读延迟:可通过
INFORMATION_SCHEMA.LR_STATUS_GLOBAL中的CHECKPOINT_LAG观察延迟。
查看复制状态
核心状态视图说明
以下 LR_* 为 INFORMATION_SCHEMA 的系统视图(内存表),字段值来自 PD。部分字段在未就绪或不适用时为 NULL。
INFORMATION_SCHEMA.LR_STATUS_GLOBAL
物理复制的全局链路状态,主要字段如下:
| 字段 | 说明 |
|---|---|
REPLICATION_NAME | 复制链路名称 |
REPLICA_CLUSTER_ID | 下游集群 ID |
SOURCE_CLUSTER_ID | 上游集群 ID |
PROTECTION_MODE | 保护模式:MAXIMUM_PERFORMANCE、MAXIMUM_PROTECTION、MAXIMUM_AVAILABILITY |
DEGRADE_TIMEOUT | 降级超时时长(秒),仅 PROTECTION_MODE = MAXIMUM_AVAILABILITY 时有值 |
REPLICATION_STATE | 复制状态:INITIALIZING、REPLICATING、PAUSED |
REPLICATION_MODE | 当前实际复制模式:SYNC、ASYNC、UNKNOWN。该字段反映运行时的实际复制模式,可能与 PROTECTION_MODE 不一致(例如 MAXIMUM_AVAILABILITY 自动降级后此处显示 ASYNC) |
CHECKPOINT_TS | 全局快照读时间戳 |
CHECKPOINT_TIME | 对应 CHECKPOINT_TS 的物理时间 |
CHECKPOINT_LAG | 快照读延迟(秒) |
INITIALIZING_PROGRESS | 初始化进度百分比 |
LAST_HEARTBEAT_TIME | 最近一次心跳更新时间 |
当尚未产生 CHECKPOINT_TS 或尚未收到心跳时,CHECKPOINT_* 与 LAST_HEARTBEAT_TIME 为空。
INFORMATION_SCHEMA.LR_CLUSTER_STATUS_GLOBAL
参与复制链路的各集群角色与就绪状态,主要字段如下:
| 字段 | 说明 |
|---|---|
CLUSTER_ID | 集群 ID |
SOURCE_CLUSTER_ID | 该集群的上游集群 ID(PRIMARY 行为空) |
ROLE | 角色:PRIMARY、STANDBY、STANDARD。其中 STANDARD 表示该集群未参与任何复制链路 |
SWITCHOVER_READY | 是否具备计划内切换条件:YES / NO / UNKNOWN |
FAILOVER_READY | 是否具备计划外切换条件:YES / NO / UNKNOWN |
REPLICATION_STATE | 该集群视角的复制状态(PRIMARY 行为空) |
LAST_HEARTBEAT_TIME | 该集群最近一次上报心跳的时间(PRIMARY 行为空) |
该视图会包含一行 PRIMARY 记录;其余 STANDBY 行对应各条复制链路。
INFORMATION_SCHEMA.LR_WORKFLOW_HISTORY_GLOBAL
物理复制的工作流执行历史,主要字段如下:
| 字段 | 说明 |
|---|---|
WORKFLOW_ID | 工作流唯一 ID |
REPLICATION_NAME | 关联的复制链路名称 |
REPLICA_CLUSTER_ID | 下游集群 ID |
SOURCE_CLUSTER_ID | 上游集群 ID |
WORKFLOW_TYPE | 工作流类型:CREATE、DROP、PAUSE、RESUME、SWITCHOVER_PRIMARY、ALTER、ACTIVATE_STANDBY、REINSTATE、SET_READ_ONLY |
WORKFLOW_INFO | 工作流具体参数信息 |
START_TIME | 启动时间 |
END_TIME | 结束时间 |
WORKFLOW_STATE | 执行状态:PENDING、IN_PROGRESS、COMPLETED |
WORKFLOW_STATE_INFO | 执行状态的详细信息,仅在 IN_PROGRESS 时有内容,其余状态为空 |
INITIATOR_CLUSTER_ID | 发起操作的集群 ID |
WORKFLOW_STATE 用于展示工作流的执行状态;如需进一步排查,可结合 WORKFLOW_STATE_INFO 与时间字段进行判断。
INFORMATION_SCHEMA.LR_STATUS_LOCAL
当前连接集群的本地复制元数据(结构化视图),主要字段如下:
| 字段 | 说明 |
|---|---|
CLUSTER_ID | 本集群 ID |
ROLE | 当前角色:PRIMARY、STANDBY、STANDARD |
HAS_REPLICA | 是否存在下游复制链路:1 表示存在,0 表示不存在 |
LAST_GLOBAL_UPDATE | 最近一次全局状态更新时间 |
REPLICATION_NAME | 复制链路名称(仅 STANDBY) |
SOURCE_CLUSTER_ID | 上游集群 ID(仅 STANDBY) |
SOURCE_PD_ADDRS | 上游 PD 地址列表(仅 STANDBY) |
PROTECTION_MODE | 保护模式(仅 STANDBY) |
DEGRADE_TIMEOUT | 降级超时(仅 STANDBY,不适用时为 NULL) |
REPLICATION_STATE | 复制状态(仅 STANDBY) |
REPLICATION_MODE | 当前实际复制模式:SYNC、ASYNC、UNKNOWN(仅 STANDBY) |
CHECKPOINT_TS | 本地可见的快照读时间戳(仅 STANDBY) |
CHECKPOINT_TIME | CHECKPOINT_TS 对应的物理时间(仅 STANDBY) |
CHECKPOINT_LAG | 快照读延迟(仅 STANDBY) |
SWITCHOVER_READY | 计划内切换就绪状态(仅 STANDBY) |
FAILOVER_READY | 计划外切换就绪状态(仅 STANDBY) |
INITIALIZING_PROGRESS | 初始化进度百分比(仅 STANDBY) |
标注为“仅 STANDBY”的字段在 PRIMARY 和 STANDARD 角色的集群上查询时返回 NULL。
示例查询
SELECT REPLICATION_NAME, REPLICATION_STATE, REPLICATION_MODE, PROTECTION_MODE, CHECKPOINT_LAG
FROM information_schema.LR_STATUS_GLOBAL;输出参考:
REPLICATION_NAME | REPLICATION_STATE | REPLICATION_MODE | PROTECTION_MODE | CHECKPOINT_LAG
------------------+-------------------+------------------+--------------------+---------------
dr_east | REPLICATING | SYNC | MAXIMUM_PROTECTION | 3查看集群角色与切换就绪状态:
SELECT CLUSTER_ID, ROLE, SWITCHOVER_READY, FAILOVER_READY
FROM information_schema.LR_CLUSTER_STATUS_GLOBAL;查看本地复制状态:
SELECT REPLICATION_NAME, REPLICATION_STATE, CHECKPOINT_LAG, INITIALIZING_PROGRESS
FROM information_schema.LR_STATUS_LOCAL;典型运维路径
- 检查配置:部署
primary/standby集群并验证 TiKV 配置。 - 建立链路:在
standby集群执行ADMIN CREATE LOG REPLICATION。 - 观察初始化:通过
INFORMATION_SCHEMA.LR_STATUS_GLOBAL确认INITIALIZING_PROGRESS达到 100%。 - 调整保护模式:初始化完成后,按需切换到
MAXIMUM_PROTECTION或MAXIMUM_AVAILABILITY。 - 日常管理:按需执行暂停、恢复、切换
source或修改保护模式。 - 故障处理:根据故障类型选择计划内切换或计划外激活。
- 接回旧主:旧
primary恢复后,按需执行REINSTATE将其接回链路。 - 清理链路:执行
ADMIN DROP LOG REPLICATION清理状态,并使用ADMIN ACTIVATE STANDBY MODE = FLASHBACK让集群退出standby状态。
相关配置参考
TiKV 配置
以下配置项与物理复制相关,除标记为必需的配置外,其余为可选调优项。
必需配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
replicator.enable | false | 启动 TiKV 上的 replicator 服务,必须开启 |
raft-engine.enable | true | 启用 raft-engine,必须开启 |
raft-engine.enable-log-archive | false | 开启 raft-engine 日志归档,必须开启 |
raft-engine.archive-retention-time | 0s | 日志归档保留时间,必须配置,建议 48h |
resolved-ts.enable | true | 启用 resolved-ts,必须开启 |
resolved-ts.advance-ts-interval | 20s | resolved-ts 推进间隔,物理复制场景建议设置为 1s |
replicator 可选配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
replicator.data-dir | <storage.data-dir>/replicator | replicator 数据存储目录,默认在 storage.data-dir 下创建 replicator 子目录 |
replicator.task-pool-size | 4 | replicator tokio 线程池大小 |
replicator.safe-ts-update-interval | 1s | safe-ts 更新间隔 |
replicator server 配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
replicator.server.addr | 基于 TiKV server.addr 的 IP,端口为 TiKV 端口 + 1000 | replicator gRPC 服务监听地址 |
replicator.server.advertise-addr | 基于 TiKV server.advertise-addr 的 IP,端口为对应端口 + 1000 | replicator 对外广播地址,集群间通信使用此地址 |
replicator.server.status-addr | 基于 TiKV server.status-addr 的 IP,端口为对应端口 + 1000 | replicator 状态服务监听地址 |
replicator.server.advertise-status-addr | 基于 TiKV server.advertise-status-addr 的 IP,端口为对应端口 + 1000 | replicator 状态服务对外广播地址 |
replicator 内部 raftstore 配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
replicator.raftstore.apply-pool-size | 4 | replicator 内部 raftstore apply 线程池大小 |
replicator.raftstore.store-pool-size | 2 | replicator 内部 raftstore store 线程池大小 |
resolved-ts 可选配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
resolved-ts.scan-lock-pool-size | 2 | 扫描锁线程池大小 |
resolved-ts.memory-quota | 256MB | resolved-ts 扫描内存配额 |
resolved-ts.incremental-scan-concurrency | 6 | 增量扫描并发数 |
resolved-ts.memory-quota-active-check-interval | 10s | 内存配额检查间隔 |
resolved-ts.memory-quota-exceeded-backoff-duration | 30s | 内存配额超额退避时间 |
PD 配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
log-replication.primary-start-check-timeout | 未设置 | primary 启动时等待直接相连的 standby 响应的超时时间。如果不设置,系统将不执行启动检查。设置后(建议 "10s" 至 "30s"),如果检查失败,primary 可能自动进入只读保护状态 |
系统变量
| 变量名 | 作用域 | 默认值 | 说明 |
|---|---|---|---|
tidb_alter_sync_max_lag_seconds | SESSION | GLOBAL | 10 | ALTER LOG REPLICATION 切换到同步复制时允许的最大 checkpoint lag(秒)。取值范围:[0, 2147483647] |