使用 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 支持。