升级4.0关机后无法启动

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】
tiup:v1.3.1
tidb:v4.0.10

【问题描述】
年前用把tidb从3.0.12升级到了4.0 ,然后关机了一段时间,今天开机启动就不行了:

查看pd.log日志为:


现在不知道从哪儿查看问题,升级后是能使用的,就是关机后再启动就出错了。
246节点为tiup当前节点,189为tidbserver节点,检查是能正常的。

目测虚拟机?
看下网络环境如何。ping 下log 中的端口,看看通不通

ip是通的,端口ping不同,无没启动现在

pd 作为第一个启动的组件,不应该去 ping 一个最后启动的 tidb-server,请看下 node_exporter 组件 log 是否有相关信息,

当前 pd-server 是否存活?

只有一些很久以前的日志:

pd-server并没有存活:
image

检查下 tidb 和 pd server 的服务器防火墙是否开启。

tidb的两台server都关了防火墙的,pd和其中一台是同一服务器,而且pd只有一个节点

你说的这种情况我之前测出来过;

  • 当时我的情况是:v2.0.19–>v3.0.0–>v4.0.10

  • 当时我的操作:

    1. 从 2.1.19 用 ansible 直升到 3.0.3
    2. 再从 ansible 导入到 tiup
    3. 使用 tiup 从 3.0.0 升级 4.0.10
      直接使用不会有问题,但是重启情况同你一样,原因是在升级后组件的启动脚本文件的重新生成上,重启需要依据生成的脚本文件启动,而单纯的 热升级 则不需要启动脚本;
      注意:真正的问题不在重启,你可以在热升级后直接不关库 reload 一下也会出现同样的问题。真正的问题是 升级 或 reload 后 tiup 会基于内置的 XXX.template 模板 重新生成对应的启动脚本文件,如下所示:为我测试机生成的启动脚本,具体的 template 生成模板可以参考 TiUP 源码。这个问题在 TIDB 启动日志中是可以找到蛛丝马迹的,反映出来的现象就是 node_expoter 启动失败,其实 blackbox_exporter 的启动也有问题。
      [tidb@tidb-5 scripts]$ pwd
      /data/tidb-deploy/monitor-9100/scripts
      [tidb@tidb-5 scripts]$ ll
      total 8
      -rwxr-xr-x. 1 tidb tidb 527 Feb 19 05:50 run_blackbox_exporter.sh
      -rwxr-xr-x. 1 tidb tidb 678 Feb 19 05:50 run_node_exporter.sh
      
      • 你会发现,在新版本的启动脚本中, EXPOTER_BIN 有两层 node_expoter/node_expoter,而老版本的 EXPOTER_BIN 仅有一层,也就是说依据启动脚本启动时,在对应的路径下找不到相应的 node_expoter 的二进制文件;

      • 问题还不只如此,下一个坑来了,新版本的 node_expoter 二进制文件应该有过升级,如果你手动修改路径后,在日志中还是可以看到报错,但是报错信息会改变,最后会发现 vmstat.fields="^.*" 中会多一些参数,我这是 5.0.0-rc 的截图仅供参考,这块 " " 引号中的内容需要做一些改动,才能拉起来。

      • blackbox_exporter 在手动修改路径后应该会直接可以拉起

  • 最后规避这种情况的方法:

    1. 从2.1.19用ansible直升到4.0.9
    2. 再从ansible导入到tiup
    3. 使用tiup从4.0.9升级4.0.10是没问题的

总结来说,其实解决办法有很多,可以手动拉起,但是缺点是以后使用 TiUP 维护时这块 Relod 总会出现问题,也可是测一下我说的方法 v1.3.1–>ansible–>tiup–>v4.0.10 ,这应该就是 TiUP 在升级过程中的一个 BUG,没有考虑到版本之间升级的差异,其实直接升再导入 TiUP 反而不会出现问题。

其实从 TiUP 给出的信息你也可以发现,启动过程中,一致卡在 component node_expoter 启动超时失败这个位置

就是这个问题,:slightly_frowning_face::slightly_frowning_face:

@jansu-dev 非常感谢你的帮忙!!

升级 tiup 到 v1.3.2 node_exporter 路径已经解决了。

sorry,这个日志没细看,但是时间也对不上,就没管。
从 tiup-cluster start 报错中看到是卡在了 node_exporter 的启动上。
可以尝试手动执行 node_exporter 组件:./run_node-exporter.sh
tiup 并不能很好的展示组件的详细的报错信息,所以需要到组件的服务器上进行排查。

哦哦,thanks about “node_exporter 路径问题” :pray:

:+1: