文档文档

使用 InfluxQL 管理你的数据库

此页面记录了 InfluxDB OSS 的早期版本。 InfluxDB OSS v2 是最新的稳定版本。 请参阅 InfluxDB v2 文档

InfluxQL 提供了一整套管理命令。

数据管理保留策略管理
CREATE DATABASECREATE RETENTION POLICY
DROP DATABASEALTER RETENTION POLICY
DROP SERIESDROP RETENTION POLICY
DELETE
DROP MEASUREMENT
DROP SHARD

如果你正在寻找 SHOW 查询(例如,SHOW DATABASESSHOW 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>] [PAST LIMIT <duration>] [FUTURE LIMIT <duration>] [NAME <retention-policy-name>]]

语法描述

CREATE DATABASE 需要一个数据库名称

WITHDURATIONREPLICATIONSHARD DURATIONPAST LIMITFUTURE LIMIT, and NAME子句是可选的,并创建一个与创建的数据库关联的单个[保留策略](/influxdb/v1/concepts/glossary/#retention-policy-rp)。 如果你在 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 需要注意的事项

  • 在指定测量名称时,DELETEFROM 子句中支持 正则表达式,在指定标签值时,在 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 问题 #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>] [PAST LIMIT <duration>] [FUTURE LIMIT <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 DURATION1h。 如果 CREATE RETENTION POLICY 查询尝试将 SHARD GROUP DURATION 设置为小于 1h 且大于 0s,则 InfluxDB 会自动将 SHARD GROUP DURATION 设置为 1h。 如果 CREATE RETENTION POLICY 查询尝试将 SHARD GROUP DURATION 设置为 0s,则 InfluxDB 会根据上面列出的默认设置自动设置 SHARD GROUP DURATION

有关推荐配置,请参阅 分片组持续时间管理

PAST LIMIT

PAST LIMIT 子句定义一个时间边界,该边界在相对于现在的过去,写入保留策略的点在该边界内被接受。 如果一个点的时间戳早于指定的边界,则该点将被拒绝,并且写入请求将返回部分写入错误。

例如,如果一个写入请求尝试将数据写入具有 PAST LIMIT 6h 的保留策略,并且请求中存在时间戳早于 6 小时的点,则这些点将被拒绝。

FUTURE LIMIT

FUTURE LIMIT 子句定义一个时间边界,该边界在相对于现在的未来,写入保留策略的点在该边界内被接受。 如果一个点的时间戳晚于指定的边界,则该点将被拒绝,并且写入请求将返回部分写入错误。

例如,如果一个写入请求尝试将数据写入具有 FUTURE LIMIT 6h 的保留策略,并且请求中存在未来时间戳大于当前时间 6 小时的点,则这些点将被拒绝。

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 查询采用以下形式,你必须声明至少一个保留策略属性 DURATIONREPLICATIONSHARD DURATIONDEFAULT

ALTER RETENTION POLICY <retention_policy_name> ON <database_name> [DURATION <duration>] [REPLICATION <n>] [SHARD DURATION <duration>] [DEFAULT]

复制因子在单节点实例中不起作用。

首先,创建持续时间为两天的保留策略 what_is_time

> CREATE RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 2d REPLICATION 1
>

修改 what_is_time 以使其具有三周的 DURATION、两小时的分片组持续时间,并使其成为 NOAA_water_databaseDEFAULT 保留策略。

> 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 不会返回错误。


此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。 你可以继续像现在这样使用它,而无需对你的代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和企业版

启动快速。 扩展更快。

获取更新

InfluxDB 3 Core 是一个开源、高速、近实时数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。 InfluxDB 3 Enterprise 基于 Core 的基础构建,增加了高可用性、只读副本、增强的安全性以及数据压缩功能,以实现更快的查询和优化的存储。 InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看: