tiflash宕机,优化器不能感知tiflash宕机,执行计划依然使用tiflash存储引擎,导致sql不能出结果。

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:5.7.25-TiDB-v4.0.0-rc.2
  • 【问题描述】:

当tiflash宕机的时候,优化器不能感知tiflash宕机。执行计划依然使用tiflash存储引擎,导致sql不能出结果。并且sql语句要执行很长时间,才返回tikv server timeout。

集群架构

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

2赞

你好,

目前 tiflash 无法回退 tikv 的问题正在优化,感谢你的反馈,

解决办法建议尝试将 tiflash 节点启动,或者通过 hint 方式强制走 tikv 存储引擎

select /*+ read_from_storage(tikv[table_name]) */ ... from table_name;

你好,我现在v5.0.4版本也遇到这个问题,只有一个flash节点,宕机之后查询 报 tiflash server timeout。
这个问题还没有修复吗? 我想再tiflash不可用的情况下,自动使用tikv,但是现在集群默认配置无法实现需求,再tidb中添加了 isolation-read.engines: [“tikv”, “tidb”, “tiflash”] 也不行。
请问是版本不支持? 还是我配置有问题呢?

自 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赞

复制了一下大佬的回答说,自 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-版本开始引入

:joy:心有灵犀,我也想到了这个

哈哈哈,是的,刚刚前几天才学到的,今天就用上了

哈哈哈,非常感谢大佬,问题解决了。这个参数可以配置在配置文件中吗? 应该怎么配置呢?

同样感谢

直接set global tidb_allow_fallback_to_tikv ='tiflash';就可以,更改会被持久化,重启后仍然生效

好的,感谢

您好 执行了这个 并且将tiflash关闭
执行了如下sql 还是会报错
mysql> select count(*) from reportxxx.rpt_xx_xxxx ;
ERROR 1105 (HY000): rpc error: code = Unavailable desc = connection error: desc = “transport: Error while dialing dial tcp 192.168.xxx:3930: connect: connection refused”