滚动升级TiDB 3.0报错ansible_mounts' is undefined,求解决方法

  • 系统版本 & kernel 版本: CentOS7.5
  • TiDB 版本:v2.1.8
  • 磁盘型号:ssd
  • 集群节点分布:节点1:中控机、PD1 节点2:tikv1、PD2 节点3:tikv2、tidb1 节点4:tikv3、tidb2
  • 数据量 & region 数量 & 副本数:数据量20G左右

这个报错算是 ansible 的一个 bug ,这样 ansible-playbook rolling_update.yml -e “gather_timeout=30” 升级试下。

参考上面给出的步骤,加上 -e 参数升级试下。

上图是加了参数重新执行的,还是报错

稍等,问题再跟进。

尝试将 gather_timeout 调大到比如 120;如仍有报错,执行下面的命令查看输出结果是否正常

ansible 10.18.101.103 -m setup -a “gather_subset=‘hardware’ filter=‘ansible_mounts’”

gather_timeout 调大到比如 120报错截图

这次的报错和上面的报错已经不同,请查看下 101.103 这台服务器上的 pd 日志,是否有有效的信息~

日志里没有看到有效信息,发现PD的版本是高版本了 image

1、你那里升级的目标版本是 3.0.6 吗?

2、检查下其他节点是否已经升级到目标版本

目标版本是3.0.6 。其他节点PD都到3.0.6了,tikv,tidb还是老版本2.1.6

1、通过如下方式确认 pd 已经升级到新版本:

1)pd 的 日志,过滤 version 关键字

2)pd-server -V 查看

2、确认下 pd 节点状态是否健康:

./pd-ctl member -u http://ip:port

./pd-ctl health -u http://ip:port

3、如果 pd 节点都确认正常,可以指定 --tags=tikv\tidb 来分别依次升级 tikv ,tidb,建议先升级 tikv,然后是 tidb

[quote=“zhenjiaogao-PingCAP, post:13, topic:2337”] pd已经升到新版本,而且都健康。指定tikv升级报原来的错 v ,tidb,建议先升级 tikv,然后 [/quote]

可以按照上面 pd 报错处理的相关流程看下~

按PD相关流程操作了一遍tikv升级,报错一样

TiDB < 3.0 版本升级到 3.0 以上请运行 ansible-playbook excessive_rolling_update.yml 进行升级。

两种方法都试了,现在各种尝试PD的版本到了目标版本,3.0.6 。tidb有一个节点到了3.0.6。tikv的版本还都是旧版本。指定升tikv或tidb都报错 ansible_mounts is undefined 。不知道怎么解决了

可以尝试一下 ansible-playbook excessive_rolling_update.yml 不要加 -l 以及 --tags 进行限制。 另外看最近 TiDB 升级时候的报错。麻烦检查下 对应 TIDB 机器的错误日志。