请教个问题:关于jdbc长连接tidb的原理

  • 【TiDB 版本】:4.0.5
  • 【问题描述】:TiDB(3)+ PD(3)+TiKV(3)
    在使用Druid连接池并发写入到tidb集群的测试中,手工kill一台tikv节点时会出报java.sql.SQLException: TiKV server timeout.
    我想咨询下关于jdbc链接到tidb后,对应的连接串能否动态的识别出tikv已经被kill了?
    还有数据能否写入到其他正常的tikv节点,期间无写入延迟?

不行,你kill一台 tikv,如果leader 节点在这台 tikv ,那么需要等到 leader 节点重新选举到其他节点才行。这个过程会有延迟。

好的,这个重新进行选举的过程和tidb节点重新加载schema也有关系吧;如果这个schema加载时间很长也会增加客户端获取到有效链接的时间吧.
image

这个重新选举leader的操作时间一般在多少时间内? 选举的时间长短一般和哪些配置或者资源有之间的因果关系?

和region数量等有关,一般需要几秒,可以看看 https://docs.pingcap.com/zh/tidb/stable/massive-regions-best-practices