使用 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>] [PAST LIMIT <duration>] [FUTURE LIMIT <duration>] [NAME <retention-policy-name>]]
语法描述
CREATE DATABASE
需要一个数据库名称。
WITH
、DURATION
、REPLICATION
、SHARD DURATION
、PAST LIMIT
、FUTURE 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
需要注意的事项
- 在指定测量名称时,
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 问题 #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 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
。
有关推荐配置,请参阅 分片组持续时间管理。
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
查询采用以下形式,你必须声明至少一个保留策略属性 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
> 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 不会返回错误。
此页是否对您有帮助?
感谢您的反馈!
支持与反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。