pd缩容后为什么执行truncate table 显示从已经下线的pd获取元数据失败呢

【 TiDB 使用环境】生产环境
【 TiDB 版本】v5.4.1
【复现路径】TIDB集群原先有三个pd节点,然后用tiup先扩容三个pd节点,再依次sacle-in三个旧pd节点
【遇到的问题:问题现象及影响】业务反馈执行truncate table 报错:failed to get old label rules from PD: Get “http://pd-a:2379/pd/api/v1/config/region-label/rules/ids\”: dial tcp pd-a:2379: connect: connection refused”] 报错显示get已经下线的pd节点

tiup cluster display 看下

看了,只有新的三个pd节点,并没有已经下线的pd节点信息,tidb服务需要重启吗?

刚才的帖子里回复你了,不知道是你缩容操作不规范,还是老版本的bug,估计得重启集群了

收到。

1、执行tiup reload --skip-restart 之后重启集群仍然不能解决问题。
2、执行tiup restart 重启集群,执行truncate table 还是报错。
tidb启动日志:


看下你的pd deploy目录scripts下的run_pd.sh里是不是还有原来的pd信息

报错的 PD 节点 IP 是老的 IP 么? 有没有重启过tidb-server 节点?我记得 tidb-server 记载的 PD 地址是写到配置文件里的,如果之前的三个 PD 节点都缩容了,可能会出现这个问题。

重启过,我手动restart -R pd 和tidb 还是报错后,执行的restart重启整个集群。restart不行又执行了次reload,仍然无法解决问题

报错的PD节点IP是老的ip。

老的机器释放了么? 可以先扩容一个PD 节点到老的机器上,先试下能不能恢复。

这个当时看过,新PD节点的run_pd.sh没有10.21这个pd信息

老的机器没有释放,把这台报错的pd重新恢复后 执行truncate就没有问题了。 现在是把老的pd下掉,执行truncate 和 rename 报错, 不影响insert,update,delete,select


感觉像是遇到这种问题了,不过理论上你重启 TiKV 后,缓存肯定已经是最新的 PD 列表了

执行一下show config where name = 'pd.endpoints' and type='tikv';看下TiKV 的缓存是不是已经改成新的 PD 列表了

嗯,这个操作文档我也注意到了, PD节点我是扩容后等了一天,才进行缩容的。

看了下,当前集群display显示pd节点信息:10.11.6.2,10.11.6.5,10.21.4.131(为了不影响业务使用,昨晚扩容上去的旧的pd节点)
执行show config 查看信息: 10.11.6.2,10.11.6.5,10.11.6.4

其他的ddl会报错吗 比如create /drop table

create试了,不会报错, drop 还没有试过

可以create一张表,再对这张表进行truncate,看下是否还有问题,先明确是否truncate自身问题