ansible部署的集群升级到tiup后,扩容PD启动报错

当前环境是从ansible部署的集群升级到tiup,版本是v4.0.0,集群包含三台服务器,每台服务器部署tidb、tikv、pd节点。

192.168.0.244 tidb+pd+tikv
192.168.0.247 tidb+pd+tikv
192.168.0.246 tidb+pd+tikv

前段时间246服务器故障下线,节点未缩容,处于down状态。将246服务器重装系统,IP变更为248,即246和248是同一台物理机。
最近扩容上线,由于246已经访问不通,在meta.yaml中将246节点删除,并重启集群。
扩容tidb、tikv正常,目前服务器部署情况:

192.168.0.244 tidb+pd+tikv
192.168.0.247 tidb+pd+tikv
192.168.0.248 tidb+tikv

扩容pd节点时,开始报错 member: no such file or directory
使用tiup start 248的pd节点,仍然报错member: no such file or directory,(FAQ中描述是未指定name,但扩容配置中已指定)
使用tiup reload 248的pd节点,不再报错member: no such file or directory。(在上一步start之后立即做的reload,未修改任何配置)
错误变成 etcd cluster ID mismatch,参照官方示例检查成员都是正常的。

如何解决报错etcd cluster ID mismatch?

附件:
扩容文件scale-out-248-pd.yaml (247 字节)
扩容后tiup配置文件meta.yaml (6.2 KB)
扩容后248pd日志pd.log (52.6 KB)
扩容后248节点上的启动文件run_pd.sh (748 字节)

2 个赞

操作前,应该先强制下线 246 节点,后面在做扩容,就没这么多毛病了
强制缩容的命令:
tiup cluster scale-in {cluster-name} -N pd_ip:pd_port --force

现在就比较麻烦,需要找到 无法识别的 cluster ID,然后做接管

可以参考:
https://docs.pingcap.com/zh/tidb/stable/pd-recover

1 个赞

如果是这样的话,以下步骤是否可行?
1、缩容248,这一步可以正常执行,之前为了验证问题,操作过重新缩容扩容。
2、还原meta
3、使用force强制下线pd节点
4、正常扩容248节点
ps:感觉这样操作下来, [member: no such file or directory]这个问题应该还是存在的。出现etcd cluster ID mismatch问题,不知道是否和这里有关。

1 个赞

不建议直接去修改 meta.yaml 文件,严格来说这种操作绕过了 tiup 的检查机制,会存在未知风险;
你可以检查下 pd-ctl 中各 member 的状态,看下是否还残留了 246 pd 信息,如果有的话可以先删除掉,然后缩容扩容下 pd 节点;在各 tikv 节点状态正常的前提下,楼上的 pd-recover 也是一种方法。

是通过pd-ctl中的member命令么?
https://docs.pingcap.com/zh/tidb/stable/pd-control#member-delete--leader_priority--leader-show--resign--transfer-member_name

是的 ,如果 memeber 中还有旧节点信息可以删除掉

刚远程看了一下确实有残留的246信息,晚上停业后我尝试修复一下~

验证可以,已成功扩容:pray:感谢~

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