一个集群有4个tikv节点,down掉3个,按理说应该有region丢失,为什么还可以执行show命令查看表结构,执行sql语句会提示context deadline exceeded

一个集群有4个tikv节点,down掉3个,按理说应该有region丢失,为什么还可以执行show命令查看表结构,执行sql语句会提示context deadline exceeded

执行的操作和报错截个图

show 命令可以查看是不是因为存放元数据信息的region的leader所在的tikv正巧没有down,但是执行sql由于大部分tikv已经挂了就没办法执行了

有可能show table的结果是来源于缓存里的信息

是指的region cache么 ,如果是的话是不是可以通过重启tidb-server 去验证一下?

表定义类数据字典信息,可以直接查information_schema.tables看看

如果我只有3个tikv节点。down掉两个,是不是还可以执行sql语句

多副本失败,会报错

如果我只有3个tikv节点。down掉两个,是不是还可以执行sql语句呢

什么意思,我3个节点down掉2个,region并没有丢失呀

region使用raft协议,默认3副本,当出现2个失败后,会导致raft做达不到多数一致状态,整个region就不可用了,但是数据还在,需要多副本失败恢复,让其在正常tikv上补充副本
参考: 【SOP 系列 18】TiUP 环境恢复 TiKV 副本

那如果我4个tikv节点的时候,down掉两个,还能执行sql语句吗

这个是要看你的查询的数据所在的region的leader peer是否还存在,如果已经没有了,载你down掉两个的情况下region不满足三副本,是没法正常工作的(个人感觉是由于无法选出leader)

能down多数tikv根据副本数来说的,3副本只能宕1个,5副本就是2个,和tikv数量没太大关系

4个tikv节点,down两个的话,就有可能造成有的副本剩2个,有的副本剩1个呀,这种情况数据库还可以用吗

部分可用,没有丢失2个副本的是可用的

那pd节点是不是同理,pd节点也是使用的raft协议,所以当一半以上的pd节点down掉以后,数据库就不能用了

是的,多数可用

那我有3个pd节点,我down掉除了leader以外的另外两个pd节点,会影响数据库使用吗

leader 宕会切到其他节点,切换过程如果压力大可能有影响