时序数据库 IoTDB 常见问题 Q&A 第六期

关于 IoTDB 的 Q & A
第六期持续答疑解惑中!我们将定期汇总社区讨论频繁的问题,并展开进行详细回答,通过积累常见问题“小百科”,方便大家使用时序数据库 IoTDB。
Q1:时序数据库 IoTDB 看门狗配置后不生效
问题现象
使用时序数据库 IoTDB 安装包自带的脚本 daemon-confignode.sh 和 daemon-datanode.sh 配置看门狗后,使用“kill -9 ConfigNode 进程号 DataNode 进程号”的方式杀掉数据库进程后,数据库进程不会自动重启。
原因
执行脚本后,默认生成的 service 文件中的 RestartPreventExitStatus=SIGKILL,表示如果服务退出状态码为 SIGKILL(信号 9),则不会重启服务,所以数据库进程不会自动重启。
解决方案
1. 执行完 daemon-confignode.sh 和 daemon-datanode.sh 后,数据库进程服务其实还没有被 systemd 接管,这时需要先把 ConfigNode 和 DataNode 服务手动停一下,然后使用下面的命令启动服务,这样数据库进程就会被 systemd 接管了。
2. 修改 /etc/systemd/system/iotdb-confignode.service 和 /etc/systemd/system/iotdb-datanode.service 中的内容,把 RestartPreventExitStatus=SIGKILL 这一行注释掉。

3. 修改完脚本后执行以下命令使修改生效。
上面的步骤执行完成后,这时再杀掉数据库进程,看门狗就可以自动拉起数据库服务了。
Q2:时序数据库 IoTDB 写入数据后 data 目录为空
问题现象
向时序数据库 IoTDB 写入少量数据后,使用 CLI 工具可以查询到这部分数据,但是在 data 目录下未查找到对应的 TsFile 文件。


问题原因
写入数据时首先写入 memtable,记录 wal,并没有直接落盘。少量数据写入情况下可能并未触发 memtable 的持久化操作,因此在 data 目录下查看不到对应的 TsFile。而通过 CLI 命令行可以从内存中查询到这部分数据。
解决方案
在 CLI 中手动执行 flush 可以将当前 memtable 的所有数据持久化到磁盘上,将 TsFile 文件封口,然后在 data 下对应的目录中可以获取到完整的 TsFile。


思考
在做测试、备份等场景中,保证此时没有并发写入的条件下,需要当前数据文件完整性的话,可以手动 flush(使用 CLI 或者程序)。
Q3:时序数据库 IoTDB 日志提示 Too many open files
问题
时序数据库 IoTDB 1.3.3 版本 IoTDB 执行查询操作失败,日志打印提示 Too many open files。通过命令查看打开文件数,结果如下:
查看当前网络连接数,结果如下:

原因和解决方案
原因一:连接太多
解决方案:降一点客户端并发。
原因二:文件太多
解决方案:观察顺乱序文件数目以及各个模块文件的大小,TsFile 过多可以调优合并,顺序文件或者乱序文件过多可以修改配置。
如果条件允许(系统资源利用率不高,对其他模块无影响的情况下),可以适当再调大合并写入限速、合并任务并发数,加速合并。
Q4:时序数据库 IoTDB TTL 不生效
问题
时序数据库 IoTDB 1.3.0 版本数据库的 TTL 设置为两天,show databases details 看到设置也是正确的,怎么还是可以查到好几天前的数据?因为有很多不活跃的测点,所以专门设置了两天过期,有什么办法可以自动清理呢?设置方式是在配置文件统一设置的。

原因
可能因为期间出现过 ConfigNode OOM,加了内存重启过。
或者是当前版本已解决的 TTL Cache 不一致问题。
方案
用命令 unset 然后再 set,设置就可以生效了。
升级到最新版 IoTDB。
Q5:时序数据库 IoTDB 一台节点的 DataNode 出现 xxxx.tsfile is not complete, and some source files is lost 错误
问题
使用时序数据库 IoTDB 1.3.0 版本集群的时候,其中有一台节点的 DataNode 出现这个错误,造成无法正常写入数据:
还有两个 DataNode 节点是好的,连接好的 DataNode 节点写入是没有问题的,但是剩下的节点就不行了。
原因
在低版本的 IoTDB 当中,Compaction 时出现上述异常,会将对应的 DataNode 设置为 ReadOnly 的状态,此时该节点会无法进行写入请求。
解决方案
更新至时序数据库 IoTDB 1.3.3 及以上版本。
评论