show retention policies on databaseName
一个数据库新建都会分配一个默认的保留策略:
-
name
,保留策略的名称。 -
duration
,数据保留的持续时长,最小为1h
(retention policy duration must be at least 1h0m0s
)。如果设置为0,数据永久保存(官方默认RP),否则过期清理。 -
shardGroupDuration
,数据存储在shardGroup
的时间跨度。shardGroup
是influxdb
的一个逻辑存储结构,其下包含多个shard
。 -
replicaN
,全称replication,复制因子,它决定在集群中存储多少个数据副本。inflxudb集群中跨N个数据节点复制数据,其中N就是复制因子。复制因子对单个节点实例不起作用,所以单机版直接设置为1即可。 -
default
,true为默认保留策略。
shardGroupDuration
是根据retention policy
的duration
计算得来,不过也可以在创建retention policy
指定。如下是retention policy's duration
和shardGroupDuration
的计算关系:
| retention policy’s duration | shardGroupDuration |
| — | — |
| < 2 days | 1 h |
| >= 2 days and <= 6 months | 1 day |
| > 6 months | 7 days |
=====================================================================================
基本语法:
CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION REPLICATION [SHARD DURATION ] [DEFAULT]
-
retention_policy_name
: 策略名。 -
database_name
: 数据库名(db必须存在)。 -
duration
: 数据保留时长。 -
REPLICATION
: 复制因子,单机版设置为1即可。 -
SHARD DURATION
:设置shardGroupDuration
时长,表示每个shard group
时间跨度时长。可不填,默认根据RP的duration计算。 -
default
: true为设置该RP为默认RP。
示例:
为monitor库创建一个数据保留时长30天的rp,同时设置shard duration为1d,副本为1,并设置为默认rp
create retention policy rp_30_days on monitor duration 30d replication 1 shard duration 1d default
为monitor库创建一个数据保留时长一个星期的rp,副本为1
create retention policy rp_one_week on monitor duration 1w replication 1
基本语法:
ALTER RETENTION POLICY <retention_policy_name> ON <database_name> DURATION REPLICATION [SHARD DURATION ] [DEFAULT]
ALTER可修改的部分有duration、replication、shard duration、default,修改时无需每个属性都写上,可修改哪个写哪个。
示例:
修改rp_1_week 保留数据时长为15days
alter retention policy rp_1_week on monitor duration 15d replication 1 default
设置rp_30_days为默认rp
alter retention policy rp_30_days on monitor default
设置某个RP
为默认RP
时,旧默认RP
会自动改为非默认RP
。
retention policy
不能修改RP名称,如果自主命名的RP名称和修改后的duration
不匹配,还不如把旧RP删除,新建一个RP。
基本语法:
DROP RETENTION POLICY <retention_policy_name> ON <database_name>
示例:
删除名为rp_1_week的rp
drop retention policy rp_1_week on monitor
注:duration
和shard duration
取值,1h
(1小时)、1d
(1天)、1w
(1周)。
========================================================================================
当一个数据库有多个retention policy
,写数据时,如不想默认RP
,可指定其他RP
。如,monitor库有两个RP
,一个是默认RP
保留数据30天,一个保留数据3天,现写入数据指定RP为3天那个。
在没有use 哪个db的时候需要指定db,选择monitor数据库,指定rp为rp_3_days写入数据到service_qps
insert into monitor.rp_3_days service_qps,svrName=TaskSvr,hostName=dev4 qps=12.9
切换选择monitor
use monitor
并指定rp为rp_3_days写入数据到service_qps
insert into rp_3_days service_qps,svrName=TaskSvr,hostName=dev4 qps=12.9