数据库管理
InfluxQL提供了一整套管理命令,包括数据管理和保留策略的管理。
下面的示例使用InfluxDB的命令行界面(CLI)。 您还可以使用HTTP API执行命令; 只需向/query
发送GET请求,并将该命令包含在URL参数q
中。
注意:如果启用了身份验证,只有管理员可以执行本页上列出的大部分命令。
数据管理
创建数据库
语法
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
的数据库,并且创建了liquid
作为数据库的默认保留策略,其持续时间为3天,副本数是1,shard group的持续时间为一个小时。
删除数据库
DROP DATABASE
从指定数据库删除所有的数据,以及measurement,series,continuous queries, 和retention policies。语法为:
DROP DATABASE <database_name>
一个成功的DROP DATABASE
查询返回一个空的结果。如果您尝试删除不存在的数据库,InfluxDB什么都不做,也不会返回错误。
用DROP从索引中删除series
DROP SERIES
删除一个数据库里的一个series的所有数据,并且从索引中删除series。
DROP SERIES
不支持WHERE
中带时间间隔。
该查询采用以下形式,您必须指定FROM
子句或WHERE
子句:
DROP SERIES FROM <measurement_name[,measurement_name]> WHERE <tag_key>='<tag_value>'
从单个measurement删除所有series:
> DROP SERIES FROM "h2o_feet"
从单个measurement删除指定tag的series:
> DROP SERIES FROM "h2o_feet" WHERE "location" = 'santa_monica'
从数据库删除有指定tag的所有measurement中的所有数据:
> DROP SERIES WHERE "location" = 'santa_monica'
用DELETE删除series
DELETE
删除数据库中的measurement中的所有点。与DROP SERIES
不同,它不会从索引中删除series,并且它支持WHERE
子句中的时间间隔。
该查询采用以下格式,必须包含FROM
子句或WHERE
子句,或两者都有:
DELETE FROM <measurement_name> WHERE [<tag_key>='<tag_value>'] | [<time interval>]
删除measurementh2o_feet
的所有相关数据:
> DELETE FROM "h2o_feet"
删除measurementh2o_quality
并且tagrandtag
等于3的所有数据:
> DELETE FROM "h2o_quality" WHERE "randtag" = '3'
删除数据库中2016年一月一号之前的所有数据:
> DELETE WHERE time < '2016-01-01'
一个成功的DELETE
返回一个空的结果。 关于DELETE的注意事项:
- 当指定measurement名称时,
DELETE
在FROM子
句中支持正则表达式,并在指定tag时支持WHERE
子句中的正则表达式。 DELETE
不支持WHERE
子句中的field。- 如果你需要删除之后的数据点,则必须指定
DELETE SERIES
的时间间隔,因为其默认运行的时间为time <now()
。
删除measurement
DROP MEASUREMENT
删除指定measurement的所有数据和series,并且从索引中删除measurement。
该语法格式为:
DROP MEASUREMENT <measurement_name>
注意:
DROP MEASUREMENT
删除measurement中的所有数据和series,但是不会删除相关的continuous queries。
目前,InfluxDB不支持在DROP MEASUREMENT
中使用正则表达式,具体在#4275中查看详情。
删除shard
DORP SHARD
删除一个shard,也会从metastore中删除shard。格式如下:
DROP SHARD <shard_id_number>
保留策略管理
以下部分介绍如何创建,更改和删除保留策略。 请注意,创建数据库时,InfluxDB会自动创建一个名为autogen
的保留策略,该保留策略保留时间为无限。您可以重命名该保留策略或在配置文件中禁用其自动创建。
创建保留策略
语法
CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> [SHARD DURATION <duration>] [DEFAULT]
语法描述
DURATION
DURATION
子句确定InfluxDB保留数据的时间。 <duration>
是持续时间字符串或INF(无限)。 保留策略的最短持续时间为1小时,最大持续时间为INF。
REPLICATION
REPLICATION
子句确定每个点的多少独立副本存储在集群中,其中n
是数据节点的数量。该子句不能用于单节点实例。
SHARD DURATION
SHARD DURATION
子句确定shard group覆盖的时间范围。 <duration>
是一个持续时间字符串,不支持INF(无限)持续时间。此设置是可选的。 默认情况下,shard group持续时间由保留策略的DURATION
决定:
保留策略的持续时间 | shard group的持续时间 |
---|---|
< 2天 | 1小时 |
>= 2天并<=6个月 | 1天 |
> 6个月 | 7天 |
最小允许SHARD GROUP DURATION
为1小时。 如果CREATE RETENTION POLICY
查询尝试将SHARD GROUP DURATION
设置为小于1小时且大于0,则InfluxDB会自动将SHARD GROUP DURATION
设置为1h。 如果CREATE RETENTION POLICY
查询尝试将SHARD GROUP DURATION
设置为0,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
,持续时间为1天,副本数为1。
创建一个默认的保留策略
> CREATE RETENTION POLICY "one_day_only" ON "NOAA_water_database" DURATION 23h60m REPLICATION 1 DEFAULT
>
该查询创建与上述示例中相同的保留策略,但将其设置为数据库的默认保留策略。
成功的CREATE RETENTION POLICY
执行返回为空。如果您尝试创建与已存在的保留策略相同的保留策略,InfluxDB不会返回错误。 如果您尝试创建与现有保留策略名称相同但具有不同属性的保留策略,InfluxDB会返回错误。
注意:也可以在
CREATE DATABASE
时指定一个新的保留策略。
修改保留策略
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
的持续时间为3个星期,shard group的持续时间为30分钟,并将其作为数据库NOAA_water_database
的默认保留策略:
> ALTER RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 3w SHARD DURATION 30m DEFAULT
>
在这个例子中,what_is_time
将保留其原始副本数为1。
删除保留策略
删除指定保留策略的所有measurement和数据:
DROP RETENTION POLICY <retention_policy_name> ON <database_name>
成功的DROP RETENTION POLICY
返回一个空的结果。如果您尝试删除不存在的保留策略,InfluxDB不会返回错误。