醋醋百科网

Good Luck To You!

influxdb之保存策略_influxdb存储容量

1.基本概念说明

1.1 InfluxDB 数据保留策略说明

InfluxDB的数据保留策略(RP)用来定义数据在InfluxDB中存放的时间,或者定义保存某个期间的数据。

一个数据库可以有多个保留策略, 但每个策略必须是独一无二的。


1.2 InfluxDB数据保留策略目的

InfluxDB本身不提供数据的删除操作, 因此用来控制数据量的方式就是定义数据保留策略。

因此定义数据保留策略的目的是让InfluxDB能够知道可以丢弃哪些数据, 节省数据存储空间,避免数据冗余的情况。


2.操作示例

2.1 查看数据保留策略

show retention policies on 数据库名

执行如下:


选择使用telegraf数据库


use telegraf;

Using database telegraf


查询数据保留策略


show retention policies on telegraf

name duration shardGroupDuration replicaN default

autogen 0s 168h0m0s 1 true



从查询的结果来看,默认只有一个策略,而上面这个策略的说明了什么信息呢?


name 策略名称:默认autogen

duration 持续时间: 0s 代表无限制

shardGroupDuration shardGroup数据存储时间:shardGroup是InfluxDB的一个基本存储结构, 应该大于这个时间的数据在查询效率上应该有所降低。

replicaN 副本个数:1 代表只有一个副本

default 是否默认策略:true 代表设置为该数据库的默认策略

2.2 新建数据保留策略


新建一个策略

CREATE RETENTION POLICY "策略名称" ON 数据库名 DURATION 时长 REPLICATION 副本个数;

新建一个策略并且直接设置为默认策略


CREATE RETENTION POLICY "策略名称" ON 数据库名 DURATION 时长 REPLICATION 副本个数 DEFAULT;

下面直接新增一个新的默认策略看看,示例如下:


创建新的默认策略之前的策略


show retention policies on telegraf

name duration shardGroupDuration replicaN default

autogen 0s 168h0m0s 1 true



创建新的默认策略role_01保留数据时长1小时


CREATE RETENTION POLICY "role_01" ON telegraf DURATION 1h REPLICATION 1 DEFAULT;

CREATE RETENTION POLICY "role_01" ON telegraf DURATION 30d REPLICATION 1 DEFAULT;

30天


查看策略的变化

show retention policies on telegraf

name duration shardGroupDuration replicaN default

autogen 0s 168h0m0s 1 false

role_01 1h0m0s 1h0m0s 1 true



因为默认策略已经修改为role_01,那么如果还想用之前的autogen策略来查询数据,则需要在查询表之前加上策略的名称:"策略名".表名,如下:


select * from "autogen".cpu limit 2;

name: cpu

time cpu host usage_guest usage_guest_nice usage_idle usage_iowait usage_irq usage_nice usage_softirq usage_steal usage_system usage_user

1574663960000000000 cpu-total locust03 0 0 99.44972486076016 0.05002501250678571 0 0 0 0 0.2501250625248291 0.2501250625430281

1574663960000000000 cpu0 locust03 0 0 99.59959959921699 0.10010010010243535 0 0 0 0 0.20020020020031867 0.10010010005008706



2.3 修改数据保留策略

ALTER RETENTION POLICY "策略名称" ON "数据库名" DURATION 时长


ALTER RETENTION POLICY "策略名称" ON "数据库名" DURATION 时长 DEFAULT

在这里示例修改role_01策略的时长为2h,如下:


show retention policies on telegraf

name duration shardGroupDuration replicaN default

autogen 0s 168h0m0s 1 false

role_01 1h0m0s 1h0m0s 1 true


执行修改时长为2小时


ALTER RETENTION POLICY "role_01" ON "telegraf" DURATION 2h


可以看到role_01的duration为2h


show retention policies on telegraf

name duration shardGroupDuration replicaN default

autogen 0s 168h0m0s 1 false

role_01 2h0m0s 1h0m0s 1 true



2.4 删除数据保留策略

drop retention POLICY "策略名" ON "数据库名"

示例删除role_01策略,如下:


查看当前的数据保留策略


show retention policies on telegraf

name duration shardGroupDuration replicaN default

autogen 0s 168h0m0s 1 false

role_01 2h0m0s 1h0m0s 1 true


删除role_01的策略


drop retention POLICY "role_01" ON "telegraf"


查看删除后的策略,可以看到剩余的策略autogen并不会自动设置为默认default策略


show retention policies on telegraf

name duration shardGroupDuration replicaN default

autogen 0s 168h0m0s 1 false



修改autogen策略为default策略


ALTER RETENTION POLICY "autogen" ON "telegraf" DEFAULT

show retention policies on telegraf

name duration shardGroupDuration replicaN default

autogen 0s 168h0m0s 1 true



3. 验证变更策略之后,存储数据是否会变少

默认的telegraf数据库的存储策略是一直保存数据,并无限制。那么为了节省数据存储,我下面创建一个保留1小时的策略,然后删除默认的策略,观察存储数据是否变少。


3.1 变更策略之前的数据存储大小

在变更策略之前,我特意运行了采集数据服务几天,查看目前的存储数据大小如下:


[root@server influxdb]# du -h --max-depth=1 .

69M ./data

69M .

[root@server influxdb]#

可以看到有69M的存储数据。


3.2 创建新策略,删除旧策略


创建新策略


CREATE RETENTION POLICY "rule_telegraf" ON telegraf DURATION 1h REPLICATION 1 DEFAULT;

show retention policies on telegraf

name duration shardGroupDuration replicaN default

autogen 0s 168h0m0s 1 false

rule_telegraf 1h0m0s 1h0m0s 1 true



删除历史策略


drop retention POLICY "autogen" ON "telegraf";

查看当前的数据策略


show retention policies on telegraf

name duration shardGroupDuration replicaN default

rule_telegraf 1h0m0s 1h0m0s 1 true



3.3 删除旧策略之后,确认数据存储大小


删除旧策略之前,数据有69M


[root@server influxdb]# du -h --max-depth=1 .

69M ./data

69M .

[root@server influxdb]#


删除旧策略之后,数据只保留15M


[root@server influxdb]# du -h --max-depth=1 .

15M ./data

15M .

[root@server influxdb]#

从上面的结果来看,只需要配置管理数据保留策略,就可以控制好数据的存储空间。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言