新节点加入后的数据同步优化问题

假设已有的TiDB集群运行很久了,这个时候新加入一个节点,那么这个新加入的节点需要和集群进行数据同步,那么怎么加快这个同步的过程。因为Raft协议在那边摆着,我想了下好像不太好做这个事情,所以想问题TiDB这一块是直接准从Raft协议还是有做一些优化?

1赞

原因:

新增 TiKV 节点,PD 会将 leader 和 region 调度到新的 TiKV 节点。

办法:

如果加快调度,可以通过 pd control 调整,加快调度速度

leader-schedule-limit: 4 (默认值)
region-schedule-limit: 4 (默认值)

如果觉得别人的回答有帮助,可以将其标记为解决方案:white_check_mark:,这样可以帮助其他有同样问题的人快速找到答案

这一块有相关的文旦介绍吗?

PD control 文档链接 https://pingcap.com/docs-cn/v3.0/reference/tools/pd-control/

感谢,我在研究下

我上个星期,因为集群空间满了,后来加了3个节点,通过调节那两个limit参数,整个集群的平均分布快了很多

1赞

大概 Region 迁移步骤:

  • 由 PD 决定待迁移的 region 分片;
  • 在 raft leader,通过 rockdb snapshot 功能,生产该 region 的快照数据(或者是最近一份可用的快照数据);
  • copy 快照数据到新增节点;
  • copy 该 region 快照数据后新增数据(raft wal,即 raft log),并进行 apply 到数据同步一致;
  • 删除该 region 在某旧节点下的 follower (元数据删除,真正数据删除基于异步的 GC 机制)。

调度进度:

  • 因为 TiKV 使用的 mutil-raft group ,在调度过程是多个复制组是并行处理;
  • 并行度通过全程线程数量来进行控制,为了保证调度的负载可控,避免影响线上业务,默认相对保守,具体参数:region-schedule-limit,可调大该参数加速调度。