基本概念
- DURATION:这个描述了保留策略要保留多久的数据。这个机制对于时序型的数据来讲,是非常有用的。
- SHARD:这个是实际存储influxdb数据的单元。每个shard保留一个时间片的数据,默认是7天。如果你保存1年的数据,那么influxdb会把连续7天的数据放到一个shard中,使用好多个shard来保存数据。
- SHARD DURATION:这个描述了每个shard存放多数据的时间片是多大。默认7天。需要注意的是,当数据超出了保留策略后,influxdb并不是按照数据点的时间一点一点删除的,而是会删除整个shard group。
- SHARD GROUP:顾名思义,这个一个shard group包含多个shard。对于开源版的influxdb,这个其实没有什么区别,可以简单理解为一个shard group只包含一个shard,但对于企业版的多节点集群模式来讲,一个shard group可以包含不同节点上的不同shard,这使得influxdb可以保存更多的数据。
- SHARD REPLICATION:这个描述了每个shard有几个副本。对于开源版来讲,只支持单副本,对于企业版来讲,每个shard可以冗余存储,这样可以避免单点故障。
关于SHARD DURATION
influxdb官方建议,如果保留期限低于2天,shard duration设置为1h,如果保留期限位于2天到6个月之间,shard duration设置为1d,如果保留期限大于6个月,shard duration设置为7d,
创建retention policy
当执行create database
时,会创建一个名叫autogen
的retention policy,它会永久保留数据
> create database testdb
> use testdb
Using database testdb
> show retention policies
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
- 1
- 2
- 3
- 4
- 5
- 6
- 7
可以通过create retention policy
的命令来创建一个新的retention policy
CREATE RETENTION POLICY "one_month" ON "testdb" DURATION 30d REPLICATION 1 DEFAULT
- 1
然后再查看一下retention policy
> show retention policies
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
one_month 720h0m0s 24h0m0s 1 true
- 1
- 2
- 3
- 4
- 5
需要注意的是,如果切换数据库的retention policy的话,已有的数据会被全部删掉。
更新retention policy
如果想修改retention policy的数据保留时间,可以使用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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
更新retention policy的保留时间的话,数据不会全部丢失。
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