region的合并是怎么发起的?

【 TiDB 使用环境】生产\测试环境\ POC
【 TiDB 版本】
【遇到的问题】
【复现路径】做过哪些操作出现的问题
【问题现象及影响】
【附件】

  • 相关日志、配置文件、Grafana 监控(https://metricstool.pingcap.com/)
  • TiUP Cluster Display 信息
  • TiUP CLuster Edit config 信息
  • TiDB-Overview 监控
  • 对应模块的 Grafana 监控(如有 BR、TiDB-binlog、TiCDC 等)
  • 对应模块日志(包含问题前后 1 小时日志)

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

region 合并是由 PD 调度发起的,region 会定期的传递心跳信息,其中包含了 region 的边界信息,如果边界信息达到合并的条件,可以和其他的region 合并,则 PD 会发起合并调度的请求,由 TIKV 来执行合并,生成一个新的region,释放掉旧的 region

可以参考这篇 TiKV 源码解析系列文章(二十一)Region Merge 源码解析 | PingCAP

Merge 的触发
与 Split 和 Conf Change 类似,PD 担任发起者。但是与 Split 不同的是,Merge 的触发完全是由 PD 判断的:

如果 Region 的大小大于 max-merge-region-size(默认 20MB)或者 key 数量大于 max-merge-region-keys(默认 200000)不会触发 Merge。

对于新 Split 的 Region 在一段时间内 split-merge-interval(默认 1h)不会触发 Merge。

确保 Source Region 与 Target Region 的所有 Peer 都存在,该信息是通过 Region Leader 上报 PD 获得。

还有一些其他的触发条件,这些属于内部机制,超出了本文的范围。

PD 在决定某个 Source Region 需要 Merge 到相邻的 Target Region 之后,之后会通过 Conf Change 把它们的 Peer 对齐到相同的 TiKV 上,再给该 Region 发送请求触发 Merge。

region和并是pd的调度任务,也可以手动加一些scheduler

和oracle中高水位的概念有些相似

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。