这个要考虑整个集群的架构设计。
TiKV 是一个集群,通过 Raft 协议保持数据一致性,并通过 PD 做负载均衡调度。单个TiKV节点失效时,会影响这个节点上存储的所有Region。对于 Region 中的Leader 结点,会中断服务,等待其他TiKV上的Region重新选举Leader,待Leader选出了可继续对外提供服务,这个过程非常短;对于Region 中的Follower节点,不会影响服务。
TiDB 是无状态的,通过前端的F5对外提供服务。当单个TiDB实例失效时,仅仅会影响正在这个实例上进行的会话,从应用的角度看,会出现单次请求失败的情况,应用重新连接至其他TiDB实例后即可继续获得服务。单个TiDB实例失效后,可以重启这个实例或者部署一个新的实例。
PD 是一个集群,通过 Raft 协议保持数据的一致性。单个实例失效时,如果不是leader,那么服务完全不受影响;如果是leader,那么PD集群会重新选出新的leader,自动恢复服务。
在实际测试和应用过程中,单数据中心,TiKV 服务不可用、TiKV 主机故障、TiDB 主机故障、PD 主机故障,数据库均能正常提供服务。