关于保留策略(Retention Policy)
保留策略用于控制数据在InfluxDB中的保留时间,如果数据超过保留策略中设定的值,数据会被从数据库中清除。
如果在使用过程中切换保留策略(包含默认策略),在原保留策略下的数据不会关联到新的保留策略下(要看原来的数据,必须切换原保留策略)。
所以,建议在创建数据库时就定好保留策略。
创建保留策略
语法
CREATE RETENTION POLICY <retention_policy_name>
ON <database_name>
DURATION <duration>
REPLICATION <n>
[SHARD DURATION <duration>]
[DEFAULT]
RETENTION POLICY:表示该命令创建的是保留策略
retention_policy_name:指定策略名称,必选
ON:指定数据库,必选
DURATION:设定保留时间,如:1h表示一小时,24h30m15s表示24小时30分15秒;范围:1小时 ~ 永久;必选
REPLICATION:指定副本数,如:1,必选
SHARD DURATION:设置分片的时间范围,可选
DEFAULT:是否设置为默认策略,如果为"default"则设置为默认策略,即该策略为当前生效策略,可选
duration时间单位:
![](https://img.haomeiwen.com/i12911498/8d032a98f4f3d26c.png)
示例
创建一个名称为“w_rp”的保留策略,数据保留时间为1小时(1h),副本数为1,并设置为默认策略。
create retention policy w_rp on weather duration 1h replication 1 shard duration 1h default
![](https://img.haomeiwen.com/i12911498/6def07369e365a39.png)
修改保留策略
和创建保留策略类似,把“CREATE”改成“ALTER”。
语法
ALTER RETENTION POLICY <retention_policy_name>
ON <database_name>
DURATION <duration>
REPLICATION <n>
SHARD DURATION <duration>
DEFAULT
示例
alter retention policy w_rp on weather duration1d replication1shard duration1d default
![](https://img.haomeiwen.com/i12911498/1e207e297bdddf87.png)
删除保留策略
需要注意的是,删除保留策略,与之关联的measurement、points将被永久删除。
语法
DROP RETENTION POLICY <retention_policy_name> ON <database_name>
示例
drop retention policy w_rp on weather
![](https://img.haomeiwen.com/i12911498/4cd9c27479724e5f.png)
关于Shard Group Duration
建议
InfluxDB将数据存储在若干shard group中(真正存储的是组内的一个个shard),而shard group则由Retention Policy进行组织,并且根据当前数据的时间戳,将数据存储在该时间戳落在由"shard duration"指定的时间范围对应的shard group中。假设shard duration设置为1h,则每隔一个小时一个shard group,每个shard group存储的是时间戳分别落在该shard group内的points。
在创建RP时如果没有设置shard duration,则由InfluxDB根据RP的duration设置默认值,设置规则如下:
RP Duration < 2 天,Shard Group Duration = 1 小时
RP Duration > 2 天 and <= 6 个月,Shard Group Duration = 1 天
RP Duration > 6个月,Shard Group Duration = 7天
InfluxDB默认设置的shard duration在大多数场景都工作的很好,但对于高吞吐量、长时间运行的InfluxDB实例来说,较长的shard group duration更加适合。所以对于需要较长的shard group duration的场景,官方推荐如下:
RP Duration < = 1 天,Shard Group Duration = 6小时
RP Duration > 1 天 and <= 7天,Shard Group Duration = 1 天
RP Duration > 7天 and <= 3个月,Shard Group Duration = 7天
RP Duration > 3个月,Shard Group Duration = 30天
RP Duration = 永久,Shard Group Duration = 52周或更长
权衡
对于较长的shard group duration,可让InfluxDB在具有相同的逻辑位置上存储更多的数据,这样可以很好地去重,提高压缩效率,并且在一些场景会有更快的查询速度,提高总体性能。
较短的shard group duration,可以更加有效地清除数据和增量备份,增加灵活性,因为当shard group duration 达到RP的duration时,InfluxDB会把整个shard group移除掉,而不是单个单个清除shard group内的points。
官方参考文档:
网友评论