一个集群有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 宕会切到其他节点,切换过程如果压力大可能有影响