运维命令

FLUSH

将指定存储组的内存缓存区 Memory Table 的数据持久化到磁盘上,并将数据文件封口。在集群模式下,我们提供了持久化本节点的指定存储组的缓存、持久化整个集群指定存储组的缓存命令。

注意:此命令客户端不需要手动调用,IoTDB 有 wal 保证数据安全,IoTDB 会选择合适的时机进行 flush。 如果频繁调用 flush 会导致数据文件很小,降低查询性能。

IoTDB> FLUSH 
IoTDB> FLUSH ON LOCAL
IoTDB> FLUSH ON CLUSTER
IoTDB> FLUSH root.ln
IoTDB> FLUSH root.sg1,root.sg2 ON LOCAL
IoTDB> FLUSH root.sg1,root.sg2 ON CLUSTER

MERGE

触发层级合并和乱序合并。当前 IoTDB 支持使用如下两种 SQL 手动触发数据文件的合并:

  • MERGE 先触发层级合并,等层级合并执行完后,再触发乱序合并。在乱序合并中,仅重写重复的 Chunk,整理速度快,但是最终磁盘会存在多余数据。
  • FULL MERGE 先触发层级合并,等层级合并执行完后,再触发乱序合并。在乱序合并中,将需要合并的顺序和乱序文件的所有数据都重新写一份,整理速度慢,最终磁盘将不存在无用的数据。
IoTDB> MERGE
IoTDB> FULL MERGE

同时,在集群模式中支持对本节点或整个集群手动触发数据文件的合并:

IoTDB> MERGE ON LOCAL
IoTDB> MERGE ON CLUSTER
IoTDB> FULL MERGE ON LOCAL
IoTDB> FULL MERGE ON CLUSTER

CLEAR CACHE

手动清除chunk, chunk metadata和timeseries metadata的缓存,在内存资源紧张时,可以通过此命令,释放查询时缓存所占的内存空间。在集群模式下,我们提供了清空本节点缓存、清空整个集群缓存命令。

IoTDB> CLEAR CACHE
IoTDB> CLEAR CACHE ON LOCAL
IoTDB> CLEAR CACHE ON CLUSTER

SET SYSTEM TO READONLY / RUNNING

手动设置系统为正常运行、只读状态。在集群模式下,我们提供了设置本节点状态、设置整个集群状态的命令,默认对整个集群生效。

IoTDB> SET SYSTEM TO RUNNING
IoTDB> SET SYSTEM TO READONLY ON LOCAL
IoTDB> SET SYSTEM TO READONLY ON CLUSTER

超时

IoTDB 支持 Session 超时和查询超时。

Session 超时

Session 超时控制何时关闭空闲 Session。空闲 Session 指在一段时间内没有发起任何操作的 Session。

Session 超时默认未开启。可以在配置文件中通过 session_timeout_threshold 参数进行配置。

查询超时

对于执行时间过长的查询,IoTDB 将强行中断该查询,并抛出超时异常,如下所示:

IoTDB> select * from root.**;
Msg: 701 Current query is time out, please check your statement or modify timeout parameter.

系统默认的超时时间为 60000 ms,可以在配置文件中通过 query_timeout_threshold 参数进行自定义配置。

如果您使用 JDBC 或 Session,还支持对单个查询设置超时时间(单位为 ms):

((IoTDBStatement) statement).executeQuery(String sql, long timeoutInMS)
session.executeQueryStatement(String sql, long timeout)

如果不配置超时时间参数或将超时时间设置为负数,将使用服务器端默认的超时时间。 如果超时时间设置为0,则会禁用超时功能。

查询中止

除了被动地等待查询超时外,IoTDB 还支持主动地中止查询,命令为:

KILL QUERY <queryId>

通过指定 queryId 可以中止指定的查询,而如果不指定 queryId,将中止所有正在执行的查询。

为了获取正在执行的查询 id,用户可以使用 show query processlist 命令,该命令将显示所有正在执行的查询列表,结果形式如下:

TimequeryIdstatement

其中 statement 最大显示长度为 64 字符。对于超过 64 字符的查询语句,将截取部分进行显示。

集群节点分布式监控工具

查看 DataNode 信息

当前 IoTDB 支持使用如下 SQL 查看 DataNode 的信息:

SHOW DATANODES

示例:

IoTDB> create timeseries root.sg.d1.s1 with datatype=BOOLEAN,encoding=PLAIN
Msg: The statement is executed successfully.
IoTDB> create timeseries root.sg.d2.s1 with datatype=BOOLEAN,encoding=PLAIN
Msg: The statement is executed successfully.
IoTDB> create timeseries root.ln.d1.s1 with datatype=BOOLEAN,encoding=PLAIN
Msg: The statement is executed successfully.
IoTDB> show regions
+--------+------------+------+-------------+------------+----------+----------+---------+----+------+
|RegionId|        Type|Status|storage group|Series Slots|Time Slots|DataNodeId|     Host|Port|  Role|
+--------+------------+------+-------------+------------+----------+----------+---------+----+------+
|       0|SchemaRegion|    Up|      root.sg|           2|         0|         1|127.0.0.1|6667|Leader|
|       1|SchemaRegion|    Up|      root.ln|           1|         0|         2|127.0.0.1|6668|Leader|
+--------+------------+------+-------------+------------+----------+----------+---------+----+------+
Total line number = 2
It costs 0.013s

IoTDB> show datanodes
+------+-------+---------+----+-------------+---------------+
|NodeID| Status|     Host|Port|DataRegionNum|SchemaRegionNum|
+------+-------+---------+----+-------------+---------------+
|     1|Running|127.0.0.1|6667|            0|              1|
|     2|Running|127.0.0.1|6668|            0|              1|
+------+-------+---------+----+-------------+---------------+
Total line number = 2
It costs 0.007s

IoTDB> insert into root.ln.d1(timestamp,s1) values(1,true)
Msg: The statement is executed successfully.
IoTDB> show regions
+--------+------------+------+-------------+------------+----------+----------+---------+----+------+
|RegionId|        Type|Status|storage group|Series Slots|Time Slots|DataNodeId|     Host|Port|  Role|
+--------+------------+------+-------------+------------+----------+----------+---------+----+------+
|       0|SchemaRegion|    Up|      root.sg|           2|         0|         1|127.0.0.1|6667|Leader|
|       1|SchemaRegion|    Up|      root.ln|           1|         0|         2|127.0.0.1|6668|Leader|
|       2|  DataRegion|    Up|      root.ln|           1|         1|         1|127.0.0.1|6667|Leader|
+--------+------------+------+-------------+------------+----------+----------+---------+----+------+
Total line number = 3
It costs 0.008s
IoTDB> show datanodes
+------+-------+---------+----+-------------+---------------+
|NodeID| Status|     Host|Port|DataRegionNum|SchemaRegionNum|
+------+-------+---------+----+-------------+---------------+
|     1|Running|127.0.0.1|6667|            1|              1|
|     2|Running|127.0.0.1|6668|            0|              1|
+------+-------+---------+----+-------------+---------------+
Total line number = 2
It costs 0.006s

DataNode 状态定义

对 DataNode 各状态定义如下:

  • Running: DataNode 正常运行,可读可写
  • Unknown: DataNode 未正常上报心跳,ConfigNode 将认为该 DataNode 不可读写
  • Removing: DataNode 正在移出集群,不可读写
  • ReadOnly: DataNode 磁盘剩余空间低于 disk_full_threshold(默认 5%),此 DataNode 将不再能写入,不再能同步数据

查看 ConfigNode 节点信息

当前 IoTDB 支持使用如下 SQL 查看 ConfigNode 的信息:

SHOW CONFIGNODES

示例:

IoTDB> show confignodes
+------+-------+-------+-----+--------+
|NodeID| Status|   Host| Port|    Role|
+------+-------+-------+-----+--------+
|     0|Running|0.0.0.0|22277|  Leader|
|     1|Running|0.0.0.0|22279|Follower|
|     2|Running|0.0.0.0|22281|Follower|
+------+-------+-------+-----+--------+
Total line number = 3
It costs 0.030s

ConfigNode 状态定义

对 ConfigNode 各状态定义如下:

  • Running: ConfigNode 正常运行
  • Unknown: ConfigNode 未正常上报心跳

查看全部节点信息

当前 IoTDB 支持使用如下 SQL 查看全部节点的信息:

SHOW CLUSTER

示例:

IoTDB> show cluster
+------+----------+-------+---------+-----+
|NodeID|  NodeType| Status|     Host| Port|
+------+----------+-------+---------+-----+
|     0|ConfigNode|Running|  0.0.0.0|22277|
|     1|ConfigNode|Running|  0.0.0.0|22279|
|     2|ConfigNode|Running|  0.0.0.0|22281|
|     3|  DataNode|Running|127.0.0.1| 9003|
|     4|  DataNode|Running|127.0.0.1| 9005|
|     5|  DataNode|Running|127.0.0.1| 9007|
+------+----------+-------+---------+-----+
Total line number = 6
It costs 0.011s

集群 Region 分布监控工具

集群中以 Region 作为数据复制和数据管理的单元,Region 的状态和分布对于系统运维和测试有很大帮助,如以下场景:

  • 查看集群中各个 Region 被分配到了哪些 DataNode,是否均衡

当前 IoTDB 支持使用如下 SQL 查看 Region:

  • SHOW REGIONS: 展示所有 Region
  • SHOW SCHEMA REGIONS: 展示所有 SchemaRegion 分布
  • SHOW DATA REGIONS: 展示所有 DataRegion 分布
  • SHOW (DATA|SCHEMA)? REGIONS OF STORAGE GROUP <sg1,sg2,...>: 展示指定的存储组<sg1,sg2,...>对应的Region分布。

首先来看一下三副本下Region的分布情况:

IoTDB> create timeseries root.sg.d1.s1 with datatype=BOOLEAN,encoding=PLAIN
Msg: The statement is executed successfully.
IoTDB> create timeseries root.sg.d2.s1 with datatype=BOOLEAN,encoding=PLAIN
Msg: The statement is executed successfully.
IoTDB> create timeseries root.ln.d1.s1 with datatype=BOOLEAN,encoding=PLAIN
Msg: The statement is executed successfully.

+--------+------------+------+-------------+------------+----------+----------+---------+----+--------+
|RegionId|        Type|Status|storage group|Series Slots|Time Slots|DataNodeId|     Host|Port|    Role|
+--------+------------+------+-------------+------------+----------+----------+---------+----+--------+
|       0|SchemaRegion|    Up|      root.sg|           2|         0|         5|127.0.0.1|6671|Follower|
|       0|SchemaRegion|    Up|      root.sg|           2|         0|         4|127.0.0.1|6669|Follower|
|       0|SchemaRegion|    Up|      root.sg|           2|         0|         3|127.0.0.1|6667|  Leader|
|       1|SchemaRegion|    Up|      root.ln|           1|         0|         5|127.0.0.1|6671|Follower|
|       1|SchemaRegion|    Up|      root.ln|           1|         0|         4|127.0.0.1|6669|Follower|
|       1|SchemaRegion|    Up|      root.ln|           1|         0|         3|127.0.0.1|6667|  Leader|
+--------+------------+------+-------------+------------+----------+----------+---------+----+--------+
Total line number = 6
It costs 0.032s

然后再来看一下单副本下Region的分布情况:

IoTDB> show regions
+--------+------------+------+-------------+------------+----------+----------+---------+----+------+
|RegionId|        Type|Status|storage group|Series Slots|Time Slots|DataNodeId|     Host|Port|  Role|
+--------+------------+------+-------------+------------+----------+----------+---------+----+------+
|       0|SchemaRegion|    Up|      root.sg|           2|         0|         5|127.0.0.1|6671|Leader|
|       1|SchemaRegion|    Up|      root.ln|           1|         0|         4|127.0.0.1|6669|Leader|
+--------+------------+------+-------------+------------+----------+----------+---------+----+------+
Total line number = 2
It costs 0.128s

查看Schema Region和Data Region的分布信息:

IoTDB> insert into root.sg.d1(timestamp,s1) values(1,true)
Msg: The statement is executed successfully.
IoTDB> insert into root.ln.d1(timestamp,s1) values(1,true)
Msg: The statement is executed successfully.

IoTDB> show data regions
+--------+----------+------+-------------+------------+----------+----------+---------+----+--------+
|RegionId|      Type|Status|storage group|Series Slots|Time Slots|DataNodeId|     Host|Port|    Role|
+--------+----------+------+-------------+------------+----------+----------+---------+----+--------+
|       2|DataRegion|    Up|      root.sg|           1|         1|         5|127.0.0.1|6671|Follower|
|       2|DataRegion|    Up|      root.sg|           1|         1|         4|127.0.0.1|6669|  Leader|
|       2|DataRegion|    Up|      root.sg|           1|         1|         3|127.0.0.1|6667|Follower|
|       3|DataRegion|    Up|      root.ln|           1|         1|         5|127.0.0.1|6671|  Leader|
|       3|DataRegion|    Up|      root.ln|           1|         1|         4|127.0.0.1|6669|Follower|
|       3|DataRegion|    Up|      root.ln|           1|         1|         3|127.0.0.1|6667|Follower|
+--------+----------+------+-------------+------------+----------+----------+---------+----+--------+
Total line number = 2
It costs 0.011s
IoTDB> show schema regions
+--------+------------+------+-------------+------------+----------+----------+---------+----+--------+
|RegionId|        Type|Status|storage group|Series Slots|Time Slots|DataNodeId|     Host|Port|    Role|
+--------+------------+------+-------------+------------+----------+----------+---------+----+--------+
|       0|SchemaRegion|    Up|      root.sg|           2|         0|         5|127.0.0.1|6671|Follower|
|       0|SchemaRegion|    Up|      root.sg|           2|         0|         4|127.0.0.1|6669|  Leader|
|       0|SchemaRegion|    Up|      root.sg|           2|         0|         3|127.0.0.1|6667|Follower|
|       1|SchemaRegion|    Up|      root.ln|           1|         0|         5|127.0.0.1|6671|Follower|
|       1|SchemaRegion|    Up|      root.ln|           1|         0|         4|127.0.0.1|6669|Follower|
|       1|SchemaRegion|    Up|      root.ln|           1|         0|         3|127.0.0.1|6667|  Leader|
+--------+------------+------+-------------+------------+----------+----------+---------+----+--------+
Total line number = 2
It costs 0.012s

展示指定的存储组<sg1,sg2,...>对应的Region分布:

IoTDB> show regions of storage group root.sg
+--------+------------+------+-------------+------------+----------+----------+---------+----+--------+
|RegionId|        Type|Status|storage group|Series Slots|Time Slots|DataNodeId|     Host|Port|    Role|
+--------+------------+------+-------------+------------+----------+----------+---------+----+--------+
|       0|SchemaRegion|    Up|      root.sg|           2|         0|         5|127.0.0.1|6671|Follower|
|       0|SchemaRegion|    Up|      root.sg|           2|         0|         4|127.0.0.1|6669|  Leader|
|       0|SchemaRegion|    Up|      root.sg|           2|         0|         3|127.0.0.1|6667|Follower|
|       2|  DataRegion|    Up|      root.sg|           1|         1|         5|127.0.0.1|6671|Follower|
|       2|  DataRegion|    Up|      root.sg|           1|         1|         4|127.0.0.1|6669|  Leader|
|       2|  DataRegion|    Up|      root.sg|           1|         1|         3|127.0.0.1|6667|Follower|
+--------+------------+------+-------------+------------+----------+----------+---------+----+--------+
Total line number = 2
It costs 0.005s

IoTDB> create timeseries root.sgcc.wf01.d1.wt01 with datatype=BOOLEAN,encoding=PLAIN
Msg: The statement is executed successfully.
IoTDB> show regions of storage group root.*.wf01
+--------+------------+------+--------------+------------+----------+----------+---------+----+--------+
|RegionId|        Type|Status| storage group|Series Slots|Time Slots|DataNodeId|     Host|Port|    Role|
+--------+------------+------+--------------+------------+----------+----------+---------+----+--------+
|       4|SchemaRegion|    Up|root.sgcc.wf01|           1|         0|         5|127.0.0.1|6671|  Leader|
|       4|SchemaRegion|    Up|root.sgcc.wf01|           1|         0|         4|127.0.0.1|6669|Follower|
|       4|SchemaRegion|    Up|root.sgcc.wf01|           1|         0|         3|127.0.0.1|6667|Follower|
+--------+------------+------+--------------+------------+----------+----------+---------+----+--------+
Total line number = 3
It costs 0.012s

Region 状态定义

对 Region 各状态定义如下:

  • Running: Region 正常运行,可读可写
  • Removing: Region 所在 DataNode 正在被移出集群,不可读写
  • Unknown: Region 所在 DataNode 未正常上报心跳,ConfigNode 认为该 Region 不可读写