Lighting导数据中提示failed to flush kvs

为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:

  • 系统版本 & kernel 版本】 CentOS 7.0
  • TiDB 版本】v2.1.8
  • 磁盘型号
  • 集群节点分布】2tidb ; 3pd; 5*tikv; tigb-lighting与其中一个pd 在一个服务器,importer和其中一个tikv在一个服务器
  • 数据量 & region 数量 & 副本数】1M文件 region 数量27420
  • 问题描述(我做了什么)】在用tidb-lighting导数据(就存了3000条)的时候,一直报failed to flush kvs这么个错误,文件格式什么的都没有问题,就是一直报错;但是我改了文件名中的表名之后,就可以完整导入成功了,请问是什么原因呢?
    改名前:
    改名后:
  • 关键词】 tigb-lighting,failed to flush kvs

这个应该与更改表名没有关系,是在导入过程中获取不到lock,重新导入避免了这个问题,可以尝试用原先的表名重新导入

试了好多遍,都不行。本来以为文件格式的问题,测试了好多次都不行,后面才改的表名,结果就成功了。

现在能尝试将表名修改回去,重新导入吗,怀疑可能是之前数据清理不干净

你说的这种方法我试了,专门把tidb-lightning.toml文件中tbl-name设置成空文件的表名,运行结果也是直接执行结束,没有任何报错,但是表名改回来后就报错了。

看下 /home/tidb/deploy/data.import/目录下的情况


里面有这两个文件,每次执行的时候都会清除掉,然后重新执行start_lightning.sh操作的

因为我看改名前的日志中生成的 uuid 是 5af80ae6,更换名字之后 uuid 并不是这个了,所以怀疑是不同的表名生成的 uuid 是不同的,5af80ae6 的数据没有清理干净可能回导致出现问题。

搜索 rocksdb io error no locks available 的新报错信息一般是在 同时有程序打开了 lock 文件导致第二个程序无法获取到 lock 报错:

https://stackoverflow.com/questions/37310588/rocksdb-io-error-lock-no-locks-available

能否在干净的 lighting 环境上测试一下

在干净的环境上测试没问题,那怎么可以清理干净这些数据呢?

这个文件锁在进程退出时是会自动清理的,建议你这边检查一下是否还有其他的程序启动着,或者根据 lsof 查一下是哪个进程还在使用这些文件


没有显示啊

请问这个是测试环境吗? 是否能够尝试重启测试一下,能否解决问题?

不是测试环境,不能重启的。

您好: 好的,正在查询是否还有其他情况,能够找出被锁的信息。多谢

您好: 能否尝试停止lightning导入后,使用ps 命令和lsof命令查看是否还有lightning进程没有停止?尝试将ligntning进程停止干净,再重新启动,多谢

没有了,停了之后都特别干净的,只有那一张表才会出现问题。