使用InfluxQL管理您的数据库
InfluxQL 提供了完整的管理命令集合。
| 数据管理: | 保留策略管理: |
| 创建数据库 | 创建保留策略 |
| 删除数据库 | 修改保留策略 |
| 删除系列 | 删除保留策略 |
| 删除 | |
| 删除测量 | |
| 删除分片 |
如果你在寻找 SHOW 查询(例如, SHOW DATABASES 或 SHOW RETENTION POLICIES),请查看 Schema Exploration。
下面部分的示例使用了 InfluxDB 命令行界面 (CLI)。 您也可以使用 InfluxDB API 执行这些命令;只需向 /query 端点发送 GET 请求,并在 URL 参数 q 中包含命令。有关使用 InfluxDB API 的更多信息,请参见 查询数据。
注意: 启用身份验证后,只有管理员用户才能执行本页面上列出的多数命令。有关更多信息,请参阅身份验证和授权的文档。
数据管理
创建数据库
创建一个新数据库。
语法
CREATE DATABASE <database_name> [WITH [DURATION <duration>] [REPLICATION <n>] [SHARD DURATION <duration>] [NAME <retention-policy-name>]]
语法描述
CREATE DATABASE 需要一个数据库 name。
WITH、DURATION、REPLICATION、SHARD DURATION 和 NAME 子句是可选的,并且创建一个与所创建数据库关联的保留策略。如果在WITH后未指定其中一个子句,则相关行为默认为autogen保留策略设置。创建的保留策略自动作为数据库的默认保留策略。有关这些子句的更多信息,请参见保留策略管理。
成功的 CREATE DATABASE 查询返回空结果。
如果您尝试创建一个已经存在的数据库,InfluxDB 不会执行任何操作,也不会返回错误。
示例
创建数据库
> CREATE DATABASE "NOAA_water_database"
>
查询创建一个名为 NOAA_water_database 的数据库。默认情况下,InfluxDB 还创建了 autogen 保留策略,并将其与 NOAA_water_database 关联。
创建一个具有特定保留策略的数据库
> CREATE DATABASE "NOAA_water_database" WITH DURATION 3d REPLICATION 1 SHARD DURATION 1h NAME "liquid"
>
该查询创建一个名为 NOAA_water_database 的数据库。
它还为 NOAA_water_database 创建了一个默认的保留策略,DURATION 为三天,一个 副本因子 为一,一个 分片组 持续时间为一小时,并且名称为 liquid。
使用 DROP DATABASE 删除数据库
The DROP DATABASE 查询删除指定数据库中的所有数据、测量、系列、连续查询和保留策略。 该查询采用以下形式:
DROP DATABASE <database_name>
删除数据库 NOAA_water_database:
> DROP DATABASE "NOAA_water_database"
>
成功的 DROP DATABASE 查询返回空结果。 如果您尝试删除一个不存在的数据库,InfluxDB 不会返回错误。
使用 DROP SERIES 从索引中删除系列
DROP SERIES 查询从数据库中的 series 删除所有点,并从索引中删除该系列。
查询的形式如下,您必须指定 FROM 子句或 WHERE 子句:
DROP SERIES FROM <measurement_name[,measurement_name]> WHERE <tag_key>='<tag_value>'
从单个测量中删除所有系列:
> DROP SERIES FROM "h2o_feet"
从单个测量中删除具有特定标签对的系列:
> DROP SERIES FROM "h2o_feet" WHERE "location" = 'santa_monica'
从数据库中的所有测量中删除具有特定标签对的所有点:
> DROP SERIES WHERE "location" = 'santa_monica'
成功的 DROP SERIES 查询返回一个空结果。
使用 DELETE 删除系列
该 DELETE 查询从数据库中的
系列 中删除所有点。
与
DROP SERIES 不同,DELETE 不会从索引中删除系列。
您必须包含 FROM 子句、WHERE 子句,或两者。
DELETE FROM <measurement_name> WHERE [<tag_key>='<tag_value>'] | [<time interval>]
删除与测量 h2o_feet 相关的所有数据:
> DELETE FROM "h2o_feet"
删除与测量 h2o_quality 相关的所有数据,并且标签 randtag 等于 3:
> DELETE FROM "h2o_quality" WHERE "randtag" = '3'
删除2020年1月1日之前在数据库中发生的所有数据:
> DELETE WHERE time < '2020-01-01'
成功的 DELETE 查询返回一个空结果。
关于 DELETE 的注意事项:
DELETE支持 正则表达式 在FROM子句中指定测量名称时,以及在WHERE子句中指定标签值时。DELETE不支持 fields 在WHERE子句中。- 如果您将来需要删除点,您必须将该时间段指定为
DELETE SERIES默认情况下运行time < now()。 语法
使用 DROP MEASUREMENT 删除测量值
该 DROP MEASUREMENT 查询从指定的 measurement 中删除所有数据和系列,并从索引中删除该测量。
查询的形式如下:
DROP MEASUREMENT <measurement_name>
删除测量 h2o_feet:
> DROP MEASUREMENT "h2o_feet"
注意:
DROP MEASUREMENT会删除测量中的所有数据和系列。它不会删除相关的连续查询。
一个成功的 DROP MEASUREMENT 查询返回一个空结果。
目前,InfluxDB 不支持带有 DROP MEASUREMENTS 的正则表达式。有关更多信息,请参阅 GitHub 问题 #4275。
使用 DROP SHARD 删除一个分片
该 DROP SHARD 查询删除一个分片。它还从metastore中删除该分片。查询的形式如下:
DROP SHARD <shard_id_number>
删除id为 1 的分片:
> DROP SHARD 1
>
成功的 DROP SHARD 查询返回一个空结果。
如果您尝试删除一个不存在的分片,InfluxDB不会返回错误。
保留策略管理
以下部分将介绍如何创建、修改和删除保留策略。
请注意,当您创建数据库时,InfluxDB 会自动创建一个名为 autogen 的保留策略,具有无限的保留期。
您可以在 配置文件 中禁用其自动创建。
使用CREATE RETENTION POLICY创建保留策略
语法
CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> [SHARD DURATION <duration>] [DEFAULT]
语法描述
DURATION
DURATION子句确定 InfluxDB 保留数据的时间。<duration>是一个 duration literal 或INF(无限)。 保留策略的最短持续时间为一小时,最长持续时间为INF。
REPLICATION
该
REPLICATION子句确定每个点在集群中存储了多少个独立的副本。默认情况下,副本因子
n通常等于数据节点的数量。然而,如果您有四个或更多的数据节点,则默认副本因子n为 3。为了确保数据可以立即用于查询,将复制因子
n设置为小于或等于集群中数据节点的数量。
重要: 如果您有四个或更多数据节点,请验证数据库复制因子是否正确。
- 在单节点实例中,复制因子没有实际用途。
SHARD DURATION
- 可选。
SHARD DURATION子句确定 shard group 覆盖的时间范围。 <duration>是一个 持续时间字面量,并且不支持INF(无限制的)持续时间。- 默认情况下,分片组的持续时间由保留策略的
DURATION决定:
| 保留策略的持续时间 | 分片组持续时间 |
|---|---|
| < 2 天 | 1 小时 |
| >= 2 天并且 <= 6 个月 | 1 天 |
| > 6 个月 | 7 天 |
最小允许的 SHARD GROUP DURATION 是 1h。 如果 CREATE RETENTION POLICY 查询尝试将 SHARD GROUP DURATION 设置为小于 1h 和大于 0s,InfluxDB 会自动将 SHARD GROUP DURATION 设置为 1h。 如果 CREATE RETENTION POLICY 查询尝试将 SHARD GROUP DURATION 设置为 0s,InfluxDB 会根据上述默认设置自动设置 SHARD GROUP DURATION。
请参见 Shard group duration management 以获取推荐的配置。
DEFAULT
将新的保留策略设置为数据库的默认保留策略。 该设置是可选的。
示例
创建保留策略
> CREATE RETENTION POLICY "one_day_only" ON "NOAA_water_database" DURATION 1d REPLICATION 1
>
该查询为数据库 NOAA_water_database 创建了一个名为 one_day_only 的保留策略,持续时间为一天,复制因子为一。
创建默认保留策略
> CREATE RETENTION POLICY "one_day_only" ON "NOAA_water_database" DURATION 23h60m REPLICATION 1 DEFAULT
>
该查询创建了与上面示例中相同的保留策略,但将其设置为数据库的默认保留策略。
成功的 CREATE RETENTION POLICY 查询返回一个空响应。
如果你尝试创建一个与已有的保留策略相同的保留策略,InfluxDB不会返回错误。
如果你尝试创建一个具有与现有保留策略相同名称但不同属性的保留策略,InfluxDB会返回一个错误。
注意: 您还可以在
CREATE DATABASE查询中指定一个新的保留策略。 请参见 使用 CREATE DATABASE 创建数据库。
使用 ALTER RETENTION POLICY 修改保留策略
要执行ALTER RETENTION POLICY查询,必须声明至少一个保留策略属性DURATION、REPLICATION、SHARD DURATION或DEFAULT:
ALTER RETENTION POLICY <retention_policy_name> ON <database_name> [DURATION <duration>] [REPLICATION <n>] [SHARD DURATION <duration>] [DEFAULT]
复制因子在单节点实例中没有作用。
首先,创建保留策略 what_is_time,持续时间 DURATION 为两天:
> CREATE RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 2d REPLICATION 1
>
修改 what_is_time 以拥有三周的 DURATION、两小时的共享组持续时间,并使其成为 NOAA_water_database 的 DEFAULT 保留策略。
> ALTER RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 3w SHARD DURATION 2h DEFAULT
>
在最后一个例子中,what_is_time 保持其原始的复制因子为 1。
成功的 ALTER RETENTION POLICY 查询返回一个空结果。
使用 DROP RETENTION POLICY 删除保留策略
删除特定保留策略中的所有测量和数据:
删除保留策略将永久删除保留策略中存储的所有测量和数据。
DROP RETENTION POLICY <retention_policy_name> ON <database_name>
删除 NOAA_water_database 数据库中的保留策略 what_is_time:
> DROP RETENTION POLICY "what_is_time" ON "NOAA_water_database"
>
成功的 DROP RETENTION POLICY 查询返回一个空结果。 如果您尝试删除一个不存在的保留策略,InfluxDB 不会返回错误。