TiFlash副本同步延迟的关键在于数据追平进度与写入链路积压,需通过副本配置优化、Region调度均衡及写入负载调控协同解决。

TiFlash 副本同步延迟是 TiDB 实时分析场景稳定性的关键瓶颈,直接影响查询一致性与 OLAP 响应速度。核心监控指标需聚焦“数据追平进度”和“写入链路积压”,优化需从副本配置、Region 调度、写入负载三方面协同推进。
关键监控指标:看懂延迟到底卡在哪
tidb_tiflash_replica_available_percentage:反映表级副本就绪率,低于 100% 表示部分 Region 尚未完成同步,需结合 tidb_tiflash_replica_status 查具体表名与状态(available / unavailable / not_found)。
tiflash_proxy_region_sync_duration_seconds(P99):TiFlash Proxy 到 TiKV 的单 Region 同步耗时,持续 >1s 说明网络或 TiKV 读压力大;突增常伴随大事务或热点 Region。
tiflash_storage_write_stall_reason:TiFlash 写入阻塞原因(如 write stall due to too many pending raft logs),直接关联同步滞后——日志堆积超限会主动降速同步。
pd_scheduler_balance_region_score 与 pd_scheduler_balance_leader_score:若 TiFlash Store 的 region_score 或 leader_score 显著高于其他 Store,说明 PD 未均衡调度,部分节点承担过高同步压力。
TiFlash 副本同步延迟的常见诱因
- 副本数设置不合理:单表 TiFlash 副本数 >3 且集群规模较小时,Raft 日志广播开销陡增,同步链路易出现“木桶效应”(最慢副本拖累整体)
- Region 分裂不均 + 热点集中:小表或冷数据 Region 长期驻留同一 TiFlash 节点,而大表热点 Region 持续分裂但未被 PD 及时迁移,导致该节点 I/O 和 CPU 持续过载
- TiKV 侧读压力过大:TiFlash 同步依赖 TiKV 的 Coprocessor 扫描,当 TiKV 同时承载高并发点查/范围查询时,Raft snapshot 生成和传输会被延迟
- TiFlash 自身资源瓶颈:内存不足(tiflash_memory_usage_bytes / tiflash_memory_capacity_bytes > 0.85)触发频繁刷盘;磁盘 IO wait > 20ms 或吞吐达上限,导致 WAL 写入和 DeltaTree 合并延迟
可落地的优化操作路径
-
分级设置副本数:核心分析表设 2 副本,非关键表设 1 副本;禁用
ALTER TABLE ... SET TIFLASH REPLICA 0后残留的元数据,执行ADMIN SHOW DDL JOBS清理失败任务 -
强制 Region 调度均衡:通过 PD Control 手动打散热点,例如:
pd-ctl scheduler add evict-leader-scheduler <store-id>驱逐指定 TiFlash 节点 Leader,再移除调度器恢复;对长期滞留的 Region 使用pd-ctl operator add transfer-region <region-id> <to-store-id> -
降低 TiKV 同步竞争:在 TiKV 配置中调高
raftstore.apply-pool-size = 4(默认 2),并启用raftstore.store-io-pool-size = 2隔离同步 IO;对大事务拆分,避免单事务修改 > 10k 行触发 snapshot 阻塞 -
TiFlash 资源精细化分配:为 TiFlash 单独配置
storage.main.dir到高速 NVMe 盘;内存预留 20% 给 OS,profiles.default.max_memory_usage = 70%防止 OOM;关闭非必要 profile(如profiles.default.enable_lz4 = false若无需压缩)
验证与持续观察建议
优化后重点观察 30 分钟内 tiflash_proxy_region_sync_duration_seconds P99 是否回落至 300ms 内,同时确认 tidb_tiflash_replica_available_percentage 稳定在 100%。开启 slow-query-file 并过滤含 coprocessor 的慢日志,定位是否仍有 TiKV 侧扫描瓶颈。不复杂但容易忽略的是:定期检查 information_schema.tiflash_replica 中 progress 字段,对长期










