region snapshot 发送问题

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】
4.0.12
【问题描述】

描述“譬如,在做 storage 的调度的时候,PD 需要将 region 的某一个副本从一个 TiKV 迁移到另一个 TiKV,该 region 的 leader peer 会首先在目标 TiKV 上面添加一个新的 peer,这时候的操作是 leader 会生成当前 region 的 snapshot,然后发给 follower。Follower 收到 snapshot 之后,apply 到自己的状态机里面。同时,leader 会给原来要迁移的 peer 发送删除命令,该 follower 会在状态机里面清掉对应的数据。虽然一个 region 大概是 64MB,但过于频繁的一下子删除 64MB 数据,或者新增 64MB 数据,对于整个系统都是一个不小的负担。所以我们一定要控制整个调度的速度”

  1. 在创建新的region peer时,发送snapshot期间leader的变化数据怎么处理?
  2. region 在split/merge期间会不会阻塞写以及变化的数据怎么处理?
    谢谢!
  1. 增量数据通过 raft log 进行同步
  2. region 在 split 和 merge 期间不会阻塞写,对于 region 而言,split 和 merge 也是一条 raft log 日志,写入数据也是一条 raft log ,raft 协议会保证数据一致性。

感谢! 1. 增量数据同步是在snapshot发送期间就处理raft log吗,有没有这方面的文档说明

不是,在发送 snapshot 期间,leader 长持续会有写入,会长生新的 raft log ,等 snapshot 发送给 follower 并且应用之后,follower 会向 leader 请求 snapshot 与最新的 raft log 之间的差异日志,并应用。

这部分可以看下 raft 论文。

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