【 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 个赞
有猫万事足
2023 年10 月 9 日 08:50
8
上面的说法都比较靠谱。
而且你的报错里面也提示了
Receive TsoResponse failed
应该是pd处于一个连tso都提供不了的状态。
重新建立htap,可以修复; 应该是集群断电引起的, tidb这块的健壮性还有提升空间.
ALTER TABLE d.table SET TIFLASH REPLICA 0;
ALTER TABLE d.table SET TIFLASH REPLICA 1;