使用tidb用户部署集群前进行tiup cluster check --enable-disk ,部署集群完成后,start集群报错

Bug 反馈
清晰准确地描述您发现的问题,提供任何可能复现问题的步骤有助于研发同学及时处理问题
【 TiDB 版本】
v8.5.1
tiup版本v1.16.1
【 Bug 的影响】
使用tidb用户部署集群前进行tiup cluster check --enable-disk ,部署集群完成后,start集群报错

【可能的问题复现步骤】

  1. 首先使用tidb用户,然后运维机器和其他节点间ssh互信。
  2. 执行tiup cluster check ./topology.yaml --enable-disk 后
  3. 会在每个部署节点生成一个root权限的tidb-data路径。
  4. 在后续操作,比如tiup cluster check ./topology.yaml --apply会提示存在tidb-data路径。
  5. deploy后启动集群也会超时,日志中会显示没有权限:

【看到的非预期行为】

【期望看到的行为】

【相关组件及具体版本】
v8.5.1
tiup版本v1.16.1
【其他背景信息或者截图】
请参考问题:使用tidb用户部署集群时,init后启动集群报错。疑似bug


目录权限检查过吗?如果是 tidb 用户部署的,需要创建文档是 tidb 用户 770 权限。

只有你的 topology.yaml 里面配置的用户是 root,才会这样生成的。

配置用户是tidb,你可以根据上述步骤验证,必现!!

./topology.yaml 的配置发一下看看

以下是配置文件:
topoly-new.yaml (3.4 KB)

TiDB 用户有 sudo 权限吗?https://docs.pingcap.com/zh/tidb/v8.1/check-before-deployment

麻烦发一下 tiup deploy 的日志,正常来说 deploy 会有更改目录属主的步骤。
tiup cluster audit | grep deploy # 找到部署的 ID,第一个字段
然后
tiup cluster audit gx2BBrMfMkP >deploy.log
把 deploy.log 发一下

这些都没问题的

这是部署的日志:
deploy.log (844.5 KB)

/usr/bin/sudo -H bash -c "test -d /data1/tidb-data || (mkdir -p /data1/tidb-data && chown tidb:$(id -g -n tidb) /data1/tidb-data)"

tiup 执行的命令如上,先检查 /data1/tidb-data 目录是否存在,如果不存在则创建目录并修改属组,如果存在则不执行后面的步骤。

然后针对pd 的数据目录执行如下命令
/usr/bin/sudo -H bash -c "test -d /data1/tidb-data/pd-2379 || (mkdir -p /data1/tidb-data/pd-2379 && chown tidb:$(id -g -n tidb) /data1/tidb-data/pd-2379)

正常来说如果 没有 /data1/tidb-data/pd-2379 这个目录,则后续的修改属组动作是会执行的。
可以检查下 tiup cluster check --enable-disk 的日志,看下是否有创建 /data1/tidb-data/pd-2379 目录这个步骤,如果有,那就是 tiup 的 bug,如果没有那就是其他问题了。

感觉是在执行fio压测时,创建了相关的路径,但是没有删除。


下面是具体的执行日志:
check.log (1.4 MB)

看了下代码,tiup 只把 tiup-fio-test 这个目录删除了 :rofl: 代码位置如下

应该石锤是 tiup 的 bug 了,可以去 GitHub - pingcap/tiup: A component manager for TiDB 提个 issue,官方修复很快的。

4 个赞

3周前已经提了。use user tidb deploy instance, execute init error · Issue #2497 · pingcap/tiup · GitHub

2 个赞

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