tiflash停止,查询报错,tikv报错

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
centos 7.5 + tidb v4.0.13

【概述】场景+问题概述
扩容tiflash后,单表查询的sql不自动使用tiflash,手动指定,sql性能会提升
但是个别很少的小表会自动走tiflash,而且不是聚合查询,为什么

1、为何很多sql不走tiflash,聚合查询也不走,都需要手动指定
2、个别查询却自动走tiflash,走tiflash的触发条件是什么
3、tiflash停止后,难道查询不会自动切回tikv吗

【背景】做过哪些操作
1、上周五扩容tiflash,上周六复制表到tiflash
2、今天上午停止tiflash

【现象】业务和数据库现象
之前测试都不会走tiflash
今天tiup停止tiflash服务,一些sql直接报错,
应用报: Error querying database. Cause: java.sql.SQLException: TiFlash server timeout
三个疑问
1、为何很多sql不走tiflash,聚合查询也不走,都需要手动指定
2、个别查询却自动走tiflash,走tiflash的触发条件是什么
3、tiflash停止后,难道查询不会自动切回tikv吗

【业务影响】
个别生产业务查询报错,而且很多tikv也报错了



【TiDB 版本】
v4.0.13

【附件】

  1. TiUP Cluster Display 信息

  2. TiUP Cluster Edit Config 信息

  3. TiDB- Overview 监控

  • 对应模块日志(包含问题前后1小时日志)

1,2可以参考https://docs.pingcap.com/zh/tidb/stable/use-tiflash#%E4%BD%BF%E7%94%A8-tidb-%E8%AF%BB%E5%8F%96-tiflash
问题3:
自 v5.0 版本开始,新增了系统变量 tidb_allow_fallback_to_tikv ,用于决定是否在 TiFlash 查询失败时,自动将查询回退到 TiKV 尝试执行。在设置该参数时,需要考虑对 TiKV 造成的影响:

https://docs.pingcap.com/zh/tidb/v5.0/system-variables/#tidb_allow_fallback_to_tikv-从-v50-版本开始引入

首先,谢谢您的回答,但是并没有解决问题啊
1、你发的连接我都看过,并没有说明1,2的问题
2、第3个问题,那如果说4.0.13扩容tiflash,就无法缩容了么,永远都要走tiflash?

第三个问题文档里有说明的

如果表仅有单个 TiFlash 副本且相关节点无法服务,智能选择模式下的查询会不断重试,需要指定 Engine 或者手工 Hint 来读取 TiKV 副本。

需要人工介入指定 Engine 或者手工 Hint 来读取 TiKV 副本。

https://docs.pingcap.com/zh/tidb/v4.0/use-tiflash#engine-%E9%9A%94%E7%A6%BB

第一个和第二个问题,智能选择模式下优化器会自动选择走tikv还是tiflah,但是由于统计信息等等问题这个选择也不是百分之百准确,不能完全依赖优化器的选择,可以用手工 Hint的方式指定你想要走的引擎。

好的,下面这种情况:
["tikv", "tidb", "tiflash"]
现在engine默认智能选择为这三个,如果现在停止tiflash,按常理会发生什么

4.0版本这种情况下如果优化器认为走tiflash更优,查询就会不断重试并且报错。其实可以搞多个tiflah节点,使用多副本,这样即使一个挂掉也没事。

我们方案目前就是改tidb server实例级参数,但是在测试阶段,所有的执行计划都是走的都是tikv,我们这边现在需要弄清楚,什么触发条件下,会走tiflash,否则无法给业务一个交代

好的,第3个问题明白了,谢谢

目前只是扩容了tiflash,然后做了数据复制,但是停止tiflash的时候,业务就报错了,这个与我们在测试阶段的现象是不一致的,实例级参数是准备过两天再改的,还没用于生产

看了下文档,我理解tiflash缩容,需要TiFlash 集群剩余 Pod 数小于所有数据表的最大副本数 N,如果停止flash,需要把所有表的tiflash副本去掉,

ALTER TABLE table_name SET TIFLASH REPLICA count

count 表示副本数,0 表示删除。

参考:https://docs.pingcap.com/zh/tidb-in-kubernetes/stable/scale-a-tidb-cluster#水平缩容-tiflash

停TiFlash的时候可以分批次,一次性都停了业务肯定要报错了

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。