【TiDB 版本】4.0.9
【问题描述】目前我们使用了3kv3pd3tidb的单机房部署,因为需求要进行异地机房的扩容和高可用实现。计划扩展另外3个kv,tidb,pd节点到异地机房,并将max-replica设为6,通过打标签的方式(2DC6host),最后达到2个机房6台kv的副本完全相同,即 https://book.tidb.io/session4/chapter4/two-dc-raft.html 中的两中心单集群偶数副本方案。
测试阶段有个问题想请教下论坛的老师,当我们从3个kv节点,3个副本开始扩容时,到最后6个kv,6个副本的状态的过程中,其扩容的先后顺序最好是怎样的?
想到的有2种:
1.集群不做更改,直接扩容3台tikv,预测部分region的副本会被分散到新添加的3台kv节点上,最后达到一个平衡状态,此时再设置群集的副本数为6,并在server_configs中设置2DC6Host的标签,重启tidb群集,等待各个tikv节点补充其他节点上的副本,最后达到6等份,即region数量完全一致,leader数量几乎一致。这之后,再将pd和tidb组件扩容到新的机房中。
2.集群首先将副本数和标签更新为6副本和2DC6host,重启,然后扩容3台tikv,与1的区别应该是省略了扩容后的region副本分散,预测会直接复制3个新的副本分发到3台新的tikv上,最后达到6等份。
个人感觉1类似于扩容(3->6),而2类似于故障恢复(3变6补为6),不知道究竟哪种更安全高效?希望老师解答下,万分感谢!