添加索引报错

【 TiDB 使用环境】生产环境
【 TiDB 版本】8.0.11-TiDB-v8.1.0
【遇到的问题:问题现象及影响】

执行下面的语句创建索引:

create index inx_name
    on t (name)
    comment '名称索引';

执行失败,报错:

mkdir /tmp/tidb/tmp_ddl-4000/138741: no such file or directory.

看看对应tidb 下面

/tmp/tidb/tmp_ddl-4000

这个目录是否存在,用tidb进程的启动用户进这个目录看看权限对不对。

这个在7.1的低版本上出现过,是个bug。但是7.1的高子版本上应该是已经修复了的。看你的版本是8.1不应该会有这个问题才对。

在每个tidb的节点上,创建目录 mkdir -p /tmp/tidb/tmp_ddl-4000

好的,正常情况下这个目录不应该手动创建吧?

正常情况不需要的

你是升级升上来的?正常创建集群的时候默认会创建的。

1 个赞

看你这个是从8.0.11升级到8.1后出现的问题吗?

看一下报错目录的权限是不是TiDB用户,不是的话需要chown授权一下。

前面应该是mysql版本,后面是tidb版本,tidb v8.0是DMR版本,不会有分支版本。

1、确认以下目录是否存在
sudo ls -ld /tmp/tidb/tmp_ddl-4000/138741

2、如果不存在,或者权限不是tidb的安装用户和组,则执行以下步骤:
sudo mkdir -p /tmp/tidb/tmp_ddl-4000/138741
sudo chown -R tidb安装用户:tidb安装组 /tmp/tidb

3、然后再看看创建索引是否可以了

目录问题,在tidb服务器各节点上分别创建如下 ,并授权
/tmp/tidb/tmp_ddl-4000