美文网首页
InfluxDB:保留策略(Retention Policy)

InfluxDB:保留策略(Retention Policy)

作者: gdyycn | 来源:发表于2020-04-04 00:58 被阅读0次

关于保留策略(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时间单位:

示例

创建一个名称为“w_rp”的保留策略,数据保留时间为1小时(1h),副本数为1,并设置为默认策略。

create retention policy w_rp on weather duration 1h replication 1 shard duration 1h default


修改保留策略

和创建保留策略类似,把“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


删除保留策略

需要注意的是,删除保留策略,与之关联的measurement、points将被永久删除。

语法

DROP RETENTION POLICY <retention_policy_name> ON <database_name>

示例

drop retention policy w_rp on weather

关于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。

官方参考文档:

https://docs.influxdata.com/influxdb/v1.7/query_language/database_management/#create-retention-policies-with-create-retention-policy

相关文章

网友评论

      本文标题:InfluxDB:保留策略(Retention Policy)

      本文链接:https://www.haomeiwen.com/subject/ncjrphtx.html