InfluxDB—数据保留策略(Retention Policies)介绍

InfluxDB每秒可以处理成千上万条数据,要将这些数据全部保存下来会占用大量的存储空间,有时我们可能并不需要将所有历史数据进行存储并且InfluxDB本身不提供数据的删除操作,因此,InfluxDB推出了数据保留策略RP(Retention Policies),用来让我们自定义数据的保留时间。

创建RP

当执行create database时,会创建一个名叫autogen的retention policy,duration=0 表示它会永久保留数据。

> create database testdb
> use testdb
Using database testdb
> show retention policies
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true

可以通过create retention policy的命令来创建一个新的retention policy

CREATE RETENTION POLICY "one_month" ON "testdb" DURATION 30d REPLICATION 1 DEFAULT

其中:

  • one_month:策略名
  • testdb:具体的数据库名
  • 30d:保存 30 天,30 天之前的数据将被删除,它具有各种时间参数,比如:h(小时),w(星期)
  • REPLICATION 1:副本个数,这里填 1 就可以了
  • DEFAULT 设为默认的策略
  • shardGroupDuration :表示一个shard文件所存的数据的时间跨度
> show retention policies
name      duration shardGroupDuration replicaN default
----      -------- ------------------ -------- -------
autogen   0s       168h0m0s           1        false
one_month 720h0m0s 24h0m0s            1        true

PS : 如果切换数据库的retention policy的话,已有的数据会被全部删掉。

shardGroupDuration的取值:
在这里插入图片描述

更新RP

使用alter retention policy语句更新

> alter retention policy autogen on mydb duration 30d  REPLICATION 1  SHARD DURATION 1d default
 
> show retention policies
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 720h0m0s 24h0m0s           1        true

删除RP

DROP RETENTION POLICY "rp_name" ON "db_name"

retention policy使用建议

对于retention policy,最好的方式是在创建数据库时就考虑清楚数据要保留多长时间。

比如,可以通过下面的方式创建一个保留30天的数据库,并且,influxdb还会自动生成一个比较合理的shardGroupDuration,此时是1天。

> create database testdb2 with duration 30d
> show retention policies on testdb2
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 720h0m0s 24h0m0s            1        true

猜你喜欢

转载自blog.csdn.net/lomodays207/article/details/109714072