为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
1、麻烦测试或观察一下 集群当前 DDL 的运行情况(是否其他的 DDL 运行正常)
2、给一下这个命令的结果:curl http://xx.xx.xx.xx:10080/info 其中 xx.xx.xx.xx 替换成 tidb-server 的 ip 及状态端口
另外,你的标题是升级,你是升级时执行的命令还是升级后执行的,最好环境描述一下
1.猜测是组件直接版本问题:请检查一下所有的 tidb/tiflash 是不是也是升级到 v4.0.12,tiflash 二进制查看版本方法
2.猜测是配置问题,请另外用tiup 启动一个 v4.0.12 的集群,然后测试这个语句是否有问题。应该是没有问题的,然后你再导入你的配置,再检查一下。
猜测是升级还没有完成,角色为 DDL owner 的 TiDB 节点还处于旧版本。
可以将 curl http://xx.xx.xx.xx:10080/info
在所有 TiDB 上执行一遍,检查 is_owner: true
的 TiDB 是否已经升上了 4.0.12。如果没有,可以通过 curl -X POST http://{TiDBIP}:10080/ddl/owner/resign
驱逐到其他节点,直到 DDL owner 的 TiDB 版本为 4.0.12。
针对第一个问题,我后来修改了一下是: 所有的 tidb/tiflash 是不是也是升级到 v4.0.12?这个要把所有的 二进制都检查一下。
第二个问题我再看看你这里细节
对于导入的集群,删配置是不行的,只能增加配置或修改导入的配置,若删配置,则会回退成导入时的配置(而不是新部署的集群的默认配置)
看看选一台 TiDB 执行 SQL 语句 admin show ddl
的结果呢
这里是指 admin show ddl
, 不是 admin show ddl jobs
, 麻烦请再贴一下结果。
只针对导入的集群会这样,这个是做成 feature 的,导入的集群会在 ~/.tiup/storage/cluster/clusters//ansible-imported-configs 文件夹里面存放导入时候的配置作为默认值,如果不想要这样的行为,把这个文件夹下面的配置文件删了就好了
对于第一个问题,是会这样的,但是导入之后在 edit-config 里会显示各个组件的当前配置(前提是没手动删除):https://docs.pingcap.com/zh/tidb/stable/release-5.0.0-rc#部署及运维
所以,如果出现不一致,是能从 edit-config 里看出来的。另外就是,即使不要 ansible-imported-configs,后续扩容出来的和现有的也是不一样的,因为导入的时候分别把配置导入了各自的实例里面,新扩容的实例不会有导入的配置。
对于第二个问题,可以采用离线镜像的方式来实现:https://docs.pingcap.com/zh/tidb/stable/production-offline-deployment-using-tiup
我们会改进此问题,建了个 issue 用来 trace 这个问题:https://github.com/pingcap/tiup/issues/1347
导致这个问题的原因是,meta.yaml (edit-config 看到的配置) 和 ansible-imported-configs 同时存在导入的配置,导致这部分配置有两个副本,通过 edit-config 删除 meta.yaml 中的之后,ansible-imported-configs 中的配置继续生效。
我们的改进方案是:import 成功之后,会将 ansible-imported-configs 中所有的内容注释,这样就只会剩下 meta.yaml 一个副本。这个方案兼容 touch 的 workaround。
我们不能直接删除 ansible-imported-configs,因为有一段代码逻辑一定要将 ansible-imported-configs 应用到集群配置上,这段逻辑是来兼容老的集群的,这些集群 import 的时候没有把配置复制到 meta.yaml 中,他们的配置只存在于 ansible-imported-configs 中。如果删了 ansible-imported-configs 会导致这段逻辑报错,如果删了这段逻辑会导致老的集群配置不 work。
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。