备份数据的策略,主要包括数据保留时间和备份个数两个信息。官网中retention policy的两个作用
“A retention policy describes how long InfluxDB keeps data (DURATION) and how many copies of those data are stored in the cluster (REPLICATION)”
但是,备份个数只针对于集群机器,对于单点模式不起作用,需要设置为1。
Replication factors do not serve a purpose with single node instances.
Shard和ShardGroup
(1) ShardGroup
influxdb假设保留1个月数据,ShardGroup作用就是按某一个时间间隔来归档这些数据,比如按日归档,就是1号数据是一个ShardGroup1,2号数据是ShardGroup2。
(2) Shard
Shard是真正存储数据的。对于ShardGroup还需要按照series来划分,每一个Shard负责存储一些Series的信息,比如ShardGroup1下面有个Shard1,负责存储seriesA和seriesB的数据,那么此时Shard1里面数据就是seriesA和seriesB在1号的数据。
ShardGroup是如何设置时间区间的
默认情况下都是由保存策略来设置的。存在如下对应关系
RP Duration | Shard Group Duration |
<2days | 1 hour |
>=2days and <= 6 months | 1 day |
>6 months | 7 days |
基本操作
新增
Retention 是基于数据库的。如果没有自定义,那么都有一个默认的值,如下:
> SHOW RETENTION POLICIES ON db_metric
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
如果想要新增一个,可以通过如下命令模式进行新增一个retention策略,如下:
CREATE RETENTION POLICY <retention_policy_name> ON <database> DURATION <duration> REPLICATION <n> [DEFAULT]
(1) retention_policy_name,表示策略名称
(2) datbase,表示数据库名称。 retention策略是基于数据库的。此属性为必填项,所以Retention policy只针对某一个数据库进行创建的,不支持对全量的配置(对所有数据库都生效)。
(3) duration,表示的是时间长度。
- m表示分钟
- h表示小时
- d表示天数
- w表示周
(4) n,表示的是备份的份数。
(5) DEFAULT,用来把当前策略设置为默认策略。
举例如下,保存20天数据和备份1份:
CREATE RETENTION POLICY "20_days" ON "db_metric" DURATION 20d REPLICATION 1
查询
查询db_metric数据库上面的retension policy
> SHOW RETENTION POLICIES ON db_metric
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
20_days 480h0m0s 24h0m0s 1 false
修改
ALTER RETENTION POLICY <retention_policy_name> ON <database> DURATION <duration> REPLICATION <n> [DEFAULT]
对于上面新建的20_day2策略执行如下更新操作
(1) 只更新是否为默认策略,将策略20_days作为库db_metric默认策略
alter retention policy "20_days" on "db_metric" DEFAULT
(2) 只更新保存时间
alter retention policy "20_days" on "db_metric" duration 30d
删除
DROP RETENTION POLICY <retention_policy_name> ON <database>
- retention_policy_name,表示策略名称。
- datbase,表示数据库名称。 retention策略是基于数据库的。