TiFlash 作为列存引擎,与 TiKV 行存同步时出现 “数据延迟”“副本不可用”,底层一致性保障机制的排查难点在哪?
2 个赞
难以判断 “副本是否真的不一致”
1 个赞
列存主要应用于OLAP,而行存主要注重OLTP,两者面向的技术方向也不一样~
1 个赞
TiFlash同步问题的核心难点在于Raft Learner异步复制机制下,由网络、资源瓶颈及副本状态管理复杂性共同导致的强一致性保障挑战~
1 个赞
TiFlash 作为 TiKV 的 Raft Learner 副本,仅同步 Raft 日志而非实时参与提交决策,日志复制是 “异步 + 批量” 模式,天然存在理论延迟。排查时难以区分 “正常异步延迟” 与 “异常同步阻塞”,需结合业务容忍阈值判断,无绝对统一标准
TiFlash 需先接收 Raft 日志并持久化(物理一致性),再异步转换为列存格式、构建索引(逻辑可用性)。即使日志同步完成,列存未就绪仍会显示 “副本不可用”,容易误判为日志同步故障,需拆分 “日志同步延迟” 和 “列存构建延迟” 两类问题。
TiFlash 通过 “日志序列号(Log Index)对齐” 保障与 TiKV 的数据一致性,但列存格式转换过程中可能出现索引损坏、数据编码错误,这类 “逻辑不一致” 无法通过 Raft 日志索引直接校验,缺乏轻量高效的一致性校验工具。
官方有没有相应的工具?
这块有raft协议控制,特别是raft learner角色控制