如何快速替换一台TiKV机器?

背景: 因为机器调整,需要新加一台TiKV机器D,替换当前集群的另外一台TiKV节点A。
问题: 如何在迁移最少的数据情况下,做机器替换?
期望: region迁移只涉及节点A和D,其他节点(B、C)上的region不动

PS: 直接scale-out + scale-in肯定是可以的,但是scale-out后是节点A、B、C迁移到新节点D上,在scale-in时候,又会将节点A剩余的region迁移到B、C、D节点中,这样会多很多无用的region迁移。


当前来看pt-ctl还没有scheduler符合我的需求。比较类似的是shuffle-region-scheduler,但是是随机调度,不支持指定特定两个store迁移region

正常你scale-out了立刻scale-in,A节点的region只会往D上走吧,BC他也上不去啊。。。。

好像除了扩容缩容也没太好办法

扩容缩容,无它

直接拆磁盘到新机器+修改新机器的IP为旧IP,这可能是一个思路。

我们在mysql双主架构上做过类似的事情,TiDB没做过。

TiDB都是scale out后,立即scale in,集群总体也比较平稳,影响不大。

扩缩容吧

先扩容,再缩容

先扩容,再缩容。

还有一种没有实践过的,先扩容,然后驱逐leader,再缩容。感觉上是差不多。

官方只提供了扩容缩容的方法,其他黑科技像换服务器拷贝磁盘数据不换服务器ip之类的没有测试过,稳妥起见还是按官方的来吧。

官方也没有提供其他黑科技操作 先缩容再扩容比较靠谱

有待探索新黑科技,但稳妥还是扩缩容

可以试试这个方法
1.分别为A/B/C设置标签host=A, host=B, host=C
2.设置隔离级别为host

pd-ctl config set location-labels host
pd-ctl config set isolation-level host
  1. 添加节点D,设置标签host=A
    4.下线节点A
1 个赞

:thinking:确实是个好思路,有空我实验一下。不过线上的环境,已经按照普通的扩缩容方式搞好了。。

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