如何停止正在扩容的TiKV节点的数据迁移

【 TiDB 使用环境】生产环境
【 TiDB 版本】4.0.2
【遇到的问题:问题现象及影响】
背景:线上TiKV集群扩容,增加节点提升性能。原来集群是15个节点,现在加入3个节点,迁移时候发现新加的节点磁盘容量不足,想停止扩容,维持现状一共18个节点,但是存量数据不要再往那3个节点迁移。
现在设置了store limit all 1和config set region-schedule-limit 4,迁移速度变慢。想知道是否有办法彻底停止存量数据往新节点(3台)迁移数据。

scheduler remove balance-region-scheduler
scheduler remove balance-hot-region-scheduler
这两个是立刻停止所有的region迁移动作,但是长期停不好
store weight xxx 1 0.x
这个是调整region权重,xxx代表的是新的storeid,后面跟2个数,1 代表leader权重,0.x代表region权重,把region权重调整一个合适的值,就不往上面迁移了。

另外,你这个节点如果磁盘空间上报的正确的话,也不会往上面硬迁的,除非你是多节点混部,就得用上面的手段停止迁移了。

1 个赞

把那三个新增节点,逐台下线,不行吗

没有混部,磁盘空间信息是正确上报的。

现在集群水位:
image

扩容的节点,红框那个:

集群正常一个节点是118k个region左右,占2.7T磁盘,扩容的节点只迁移了75k个region,但是已经占了2.5T磁盘,感觉这个容量不太对等,继续扩容或者缩容回去不知道是否有问题

能找新增三个节点中磁盘使用最小的一个,停止TIDB服务试试,另外也准备采购足够大的磁盘,能不能动态的下一个节点的同时,扩一个节点的磁盘数量,再并到集群上。

其实继续迁移下去也没有问题,后面你的磁盘不足会触发 low-space-ratio,不会继续往集群上迁移region了。。。

1 个赞

看数据现在迁移时容量有问题,迁移了70%左右的region数据的节点,容量和正常节点相差无几,怕继续迁移时新节点磁盘会满。

你可以看下这个参数的配置,一般是80%,到这个使用率就不会再往节点上迁移region了

1 个赞

没事儿,纯粹迁移的话撑不爆。
磁盘空间满是因为别的节点数据都压缩到了 level6 了,新迁移过来的数据还得从level0往下一层一层的落,磁盘空间占用是得大一点。慢慢会回来一些的。
rocksdb越往下压缩率越高。

1 个赞

首先,扩容应该是已经完成了。迁移是扩容后的数据平衡操作,和扩容没关系。然后,如果磁盘可用容量不足,集群会自动停止向节点迁移数据。个人觉得是这样的。

1 个赞

pd根据store id调整下权重

如果是生产环境的话,从长期的运维稳定性来说,还是保证各个tikv实例的磁盘一致比较好吧,比如替换机器切换实例等情况,磁盘不一致有可能容易发生问题。

学习了,