假设已有的TiDB集群运行很久了,这个时候新加入一个节点,那么这个新加入的节点需要和集群进行数据同步,那么怎么加快这个同步的过程。因为Raft协议在那边摆着,我想了下好像不太好做这个事情,所以想问题TiDB这一块是直接准从Raft协议还是有做一些优化?
1 个赞
原因:
新增 TiKV 节点,PD 会将 leader 和 region 调度到新的 TiKV 节点。
办法:
如果加快调度,可以通过 pd control 调整,加快调度速度
leader-schedule-limit: 4 (默认值)
region-schedule-limit: 4 (默认值)
这一块有相关的文旦介绍吗?
感谢,我在研究下
我上个星期,因为集群空间满了,后来加了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,可调大该参数加速调度。
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。