使用 InfluxQL 管理您的数据库
此页面记录了早期版本的 InfluxDB OSS。 InfluxDB OSS v2 是最新的稳定版本。请参阅 InfluxDB v2 文档。
InfluxQL 提供了一整套管理命令。
数据管理 | 保留策略管理 |
CREATE DATABASE | CREATE RETENTION POLICY |
DROP DATABASE | ALTER RETENTION POLICY |
DROP SERIES | DROP RETENTION POLICY |
DELETE | |
DROP MEASUREMENT | |
DROP SHARD |
如果您正在查找 SHOW
查询(例如,SHOW DATABASES
或 SHOW RETENTION POLICIES
),请参阅 模式浏览。
以下部分中的示例使用 InfluxDB 命令行界面 (CLI)。您也可以使用 InfluxDB API 执行命令;只需向 /query
端点发送 GET
请求,并将命令包含在 URL 参数 q
中。有关使用 InfluxDB API 的更多信息,请参阅 查询数据。
注意: 启用身份验证后,只有管理员用户才能执行此页面上列出的大多数命令。有关更多信息,请参阅关于 身份验证和授权 的文档。
数据管理
CREATE DATABASE
创建一个新的数据库。
语法
CREATE DATABASE <database_name> [WITH [DURATION <duration>] [REPLICATION <n>] [SHARD DURATION <duration>] [NAME <retention-policy-name>]]
语法描述
CREATE DATABASE
需要数据库名称。
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 删除数据库
DROP DATABASE
查询删除指定数据库中的所有数据、测量值、序列、连续查询和保留策略。该查询采用以下形式
DROP DATABASE <database_name>
删除数据库 NOAA_water_database
> DROP DATABASE "NOAA_water_database"
>
成功的 DROP DATABASE
查询返回一个空结果。如果您尝试删除一个不存在的数据库,InfluxDB 不会返回错误。
使用 DROP SERIES 从索引中删除序列
DROP 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'
删除与保留策略 one_day
中的测量值 h2o_feet
关联的所有数据
> DELETE FROM "one_day"."h2o_feet"
成功的 DELETE
查询返回一个空结果。
关于 DELETE
的注意事项
DELETE
在指定测量值名称时,在FROM
子句中以及在指定标签值时,在WHERE
子句中支持正则表达式。它不支持FROM
子句中保留策略的正则表达式。DELETE
要求您在FROM
子句中定义一个保留策略。DELETE
不支持WHERE
子句中的字段。- 如果您需要在将来删除点,则必须将该时间段指定为
DELETE SERIES
默认情况下为time < now()
运行。语法
使用 DROP MEASUREMENT 删除测量值
DROP MEASUREMENT
查询从指定的测量值中删除所有数据和序列,并从索引中删除该测量值。
该查询采用以下形式
DROP MEASUREMENT <measurement_name>
删除测量值 h2o_feet
> DROP MEASUREMENT "h2o_feet"
注意:
DROP MEASUREMENT
删除测量值中的所有数据和序列。它不会删除关联的连续查询。
成功的 DROP MEASUREMENT
查询返回一个空结果。
目前,InfluxDB 不支持 DROP MEASUREMENT
的正则表达式。有关更多信息,请参阅 GitHub Issue #4275。
使用 DROP SHARD 删除分片
DROP SHARD
查询删除一个分片。它还会从元存储中删除该分片。该查询采用以下形式
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>
是一个持续时间文字或INF
(无限)。保留策略的最小持续时间为一小时,最大持续时间为INF
。
REPLICATION
REPLICATION
子句确定每个点的多少个独立副本存储在集群中。默认情况下,复制因子
n
通常等于数据节点的数量。但是,如果您有四个或更多数据节点,则默认复制因子n
为 3。为了确保数据可以立即用于查询,请将复制因子
n
设置为小于或等于集群中数据节点的数量。
重要提示: 如果您有四个或更多数据节点,请验证数据库复制因子是否正确。
- 复制因子不适用于单节点实例。
SHARD DURATION
- 可选。
SHARD DURATION
子句确定分片组覆盖的时间范围。 <duration>
是一个持续时间文字,不支持INF
(无限)持续时间。- 默认情况下,分片组持续时间由保留策略的
DURATION
确定
保留策略的 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
。
有关推荐配置,请参阅分片组持续时间管理。
DEFAULT
将新的保留策略设置为数据库的默认保留策略。此设置是可选的。
示例
创建保留策略
> CREATE RETENTION POLICY "one_day_only" ON "NOAA_water_database" DURATION 1d REPLICATION 1
>
该查询为数据库 NOAA_water_database
创建一个名为 one_day_only
的保留策略,持续时间为一天,复制因子为一。
创建 DEFAULT 保留策略
> 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]
复制因子不适用于单节点实例。
首先,创建一个 DURATION
为两天的保留策略 what_is_time
> 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 不会返回错误。
此页面是否对您有帮助?
感谢您的反馈!