如何将异地中心的raft leader赶走

你好,我已经将tikv增加了location标签,请问如何将异地中心已有的raft leader赶走?

通过这条命令对之前已有的raft leader分布有效吗

config set label-property reject-leader xxx

通过 pd-ctl scheduler add evict-leader-scheduler store-id 对现有 leader 进行驱逐,并添加如上设置即可

还有个问题,如果本地中心down机,但异地中心做了config set label-property reject-leader xxx,那异地中心的副本还能当leader吗

本地中心不建议使用该选项,先清楚当前集群场景在使用该设置。可以看下 tidb in action 中对此场景的描述,主要是异地集群网络延迟问题,该设置也是在异地集群中进行配置的。

禁止向异地机房调度 raft leader 当 raft leader 在异地数据中心时,会造成不必要的本地数据中心与异地数据中心间的网络消耗,同时由于网络带宽和延迟的影响,也会对 TiDB 的集群性能产生影响。需要禁用 raft leader 的调度。
config set label-property reject-leader dc dc3

我的意思是,如果设置了禁止向异地机房调度 raft leader,那么如果本地中心机器全部down机,异地中心的副本是否还可以成为leader?

不会,异地机房节点数属于半数一下,即使去掉该调度,也是无法提供服务的,只是保证数据不会丢,当然同城双机房同时不能提供服务,也是几率很小的事情。以上结论均在上述连接的架构下进行

哦好的了解了,我想接着再问两个问题:

1、如果集群半数以上tikv故障,集群会变为一个什么状态?

3、故障的tikv无法恢复,靠剩余的tikv,要怎么让集群恢复可服务状态?

  1. 这边假设的应该是 tikv 节点出现半数以上故障,tikv 集群因为是通过 raft leader 对外提供服务的,一上面的结论差不多,因为半数节点以上故障,leader 无法得到大多数的投票,所以不会对外提供服务。
  2. 这个问题需要具体问题具体分析,可以看下下面的文章是否可以帮助你理解:

好的,多谢解答

是否可以这样理解,比如我们是5个tikv,5副本的配置,现在4个tikv故障,剩余异地中心的一个副本,异地中心副本保存有完整的region,但仍旧不能提供服务,需要先补充副本数才行是吗?

是的,需要做一些处理才可以将异地副本对外提供服务

好的,谢谢

:ok_hand:ok