tidb查询报错SQL 错误 [1105] [HY000]: other error for mpp stream

【 TiDB 使用环境】生产环境
【 TiDB 版本】V6.5.0
【复现路径】SELECT COUNT(*) FROM table;
【遇到的问题:问题现象及影响】表数据量7000w, 开启了htap功能后, 已经稳定运行半个月, 今天开始发现每次查询立即报错
SQL 错误 [1105] [HY000]: other error for mpp stream: From MPPquery:444771302863798278:2,task: Poco::Exception. Code: 1000, e.code() = 2, e.displayText() = Exception: Receive TsoResponse failed, e.what() = Exception

tiflash日志:
一直打印这个信息
get safe point failed: 9: mismatch cluster id, need 7272615872205770545 but got 0

尝试了重新建立htap,
ALTER TABLE d.table SET TIFLASH REPLICA 0;
ALTER TABLE d.table SET TIFLASH REPLICA 1;

现在恢复正常了, 但是不知道原因, 不知道下次会不会再次发生… 特来求助

看下这个问题

好像不是这个问题, 而且我们使用的版本是V6.5.0, 已经没有这个配置的限制了才对

集群断过一次电, 自动重启过, 有可能是集群断电重启过一次导致的?

出现这个报错,是TiKV或TiFlash 本地存储的 cluster ID 和指定的 PD 的 cluster ID 不一致。
在存储节点第一次初始化的时候会从 PD 获取 cluster ID 存储在本地,下次启动的时候会检查本地的 cluster ID 与 PD 的 cluster ID 是否一致,如果不一致则会报错并退出。

有可能是你说的断电过导致出现了异常。

1 个赞

问题可能是由于 TiFlash 和 PD 之间的集群 ID 不一致导致的。集群 ID 是在 PD 初始化时随机分配的,用于标识不同的 TiDB 集群。如果 TiFlash 和 PD 的集群 ID 不匹配,TiFlash 无法从 PD 获取 TSO,从而导致 MPP 查询失败。

可能导致集群 ID 不一致的原因有以下几种:

  • TiFlash 节点被误加入了其他的 TiDB 集群,或者 TiFlash 节点的数据被清空后没有重新初始化。
  • PD 节点被误加入了其他的 TiDB 集群,或者 PD 节点的数据被清空后没有重新初始化。
  • TiFlash 或 PD 的配置文件中的 cluster-id 参数被错误地修改了。
1 个赞

上面的说法都比较靠谱。

而且你的报错里面也提示了
Receive TsoResponse failed

应该是pd处于一个连tso都提供不了的状态。

大佬,怎么修复呢?重启TIFLASH么?

  • 检查TiFlash节点与其它节点之间的网络状况,确保网络通畅且延迟低。您可以使用ping或telnet等工具来测试网络连通性和延迟。
  • 检查TiFlash节点的配置文件中的cluster-id参数是否与PD节点的cluster-id一致。可以使用pd-ctl工具来查看PD节点的cluster-id,并与TiFlash节点的配置文件中的cluster-id进行对比。如果不一致,需要重新部署TiFlash节点,并确保cluster-id与PD节点相同。

重新建立htap,可以修复; 应该是集群断电引起的, tidb这块的健壮性还有提升空间.
ALTER TABLE d.table SET TIFLASH REPLICA 0;
ALTER TABLE d.table SET TIFLASH REPLICA 1;