前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >InfluxDB 设置数据保留策略,验证保留的数据存储大小

InfluxDB 设置数据保留策略,验证保留的数据存储大小

作者头像
Devops海洋的渔夫
发布2019-12-02 21:39:41
11.4K0
发布2019-12-02 21:39:41
举报
文章被收录于专栏:Devops专栏

需求

在使用Telegraf+InfluxDB+Grafana监控服务器资源的时候,如果influxdb中的数据不设置超时过期的机制的话,那么数据就会默认一直保存。这样一直保存的话,数据量就会导致偏大。 这时候就要适当调整influxdb的数据存储时长,保留最近一段时间的数据即可。

1.基本概念说明

1.1 InfluxDB 数据保留策略说明

InfluxDB的数据保留策略(RP)用来定义数据在InfluxDB中存放的时间,或者定义保存某个期间的数据。 一个数据库可以有多个保留策略, 但每个策略必须是独一无二的。

1.2 InfluxDB数据保留策略目的

InfluxDB本身不提供数据的删除操作, 因此用来控制数据量的方式就是定义数据保留策略。 因此定义数据保留策略的目的是让InfluxDB能够知道可以丢弃哪些数据, 节省数据存储空间,避免数据冗余的情况。

2.操作示例

2.1 查看数据保留策略

代码语言:javascript
复制
show retention policies on 数据库名

执行如下:

代码语言:javascript
复制
# 选择使用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 新建数据保留策略

代码语言:javascript
复制
# 新建一个策略
CREATE RETENTION POLICY "策略名称" ON 数据库名 DURATION 时长 REPLICATION 副本个数;

# 新建一个策略并且直接设置为默认策略
CREATE RETENTION POLICY "策略名称" ON 数据库名 DURATION 时长 REPLICATION 副本个数 DEFAULT;

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

代码语言:javascript
复制
# 创建新的默认策略之前的策略
> 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;
> 
# 查看策略的变化
> show retention policies on telegraf
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        false
role_01 1h0m0s   1h0m0s             1        true
> 

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

代码语言:javascript
复制
> 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 修改数据保留策略

代码语言:javascript
复制
ALTER RETENTION POLICY "策略名称" ON "数据库名" DURATION 时长

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

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

代码语言:javascript
复制
> 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 删除数据保留策略

代码语言:javascript
复制
drop retention POLICY "策略名" ON "数据库名"

示例删除role_01策略,如下:

代码语言:javascript
复制
# 查看当前的数据保留策略
> 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 变更策略之前的数据存储大小

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

代码语言:javascript
复制
[root@server influxdb]# du -h --max-depth=1 .
69M ./data
69M .
[root@server influxdb]# 

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

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

代码语言:javascript
复制
# 创建新策略
> 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 删除旧策略之后,确认数据存储大小

代码语言:javascript
复制
# 删除旧策略之前,数据有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]# 

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求
  • 1.基本概念说明
    • 1.1 InfluxDB 数据保留策略说明
      • 1.2 InfluxDB数据保留策略目的
      • 2.操作示例
        • 2.1 查看数据保留策略
          • 2.2 新建数据保留策略
            • 2.3 修改数据保留策略
              • 2.4 删除数据保留策略
              • 3. 验证变更策略之后,存储数据是否会变少
                • 3.1 变更策略之前的数据存储大小
                  • 3.2 创建新策略,删除旧策略
                    • 3.3 删除旧策略之后,确认数据存储大小
                    相关产品与服务
                    对象存储
                    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档