伪·influxdb删除数据

伪 influxdb删除数据

前言

大早上的,一大佬跟我说grafan登不上了,让帮忙看看啥情况,登录服务器一通乱看,磁盘满了,因为那台服务器还装了个influxdb,估计也就是数据写的,没空间了。

influxdb作为时序数据库的一种,是不提供类似mysql的delete操作,也就是,原则上,你删不了数据,除非删库。

但是,influxdb提供了数据保留策略policies,通过对policies操作,可以达到删除数据的效果

数据保存策略(Retention Policies)

influxdb的数据保存策略policies主要是用于指定数据的保留时间,超过指定时间,就会删除这部分数据。

查询策略

1
2
3
4
> show retention policies on exceptionless;
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
  • name: 策略名称
  • duration: 保留时间,0s表示永久保存
  • shardGroupDuration:shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,个人理解为时间分区
  • replicaN:全称是REPLICATION,副本个数
  • default:是否是默认策略

新建策略

语法如下:

1
2
3
4
CREATE RETENTION POLICY ON <retention_policy_name> 
ON <database_name>
DURATION <duration>
REPLICATION <n> [SHARD DURATION <duration> ] [DEFAULT]
示例
1
CREATE RETENTION POLICY "3_day" ON "exceptionless" DURATION 3d REPLICATION 1 SHARD DURATION 3h DEFAULT;

为库exceptionless创建了一个名称为3_day的策略,其中数据保存时间为3天,SHARDDURATION为3h。

ShardGroup

shardgroup是InfluxDB中一个重要的逻辑概念,它负责指定时间跨度的数据存储,这个时间跨度在创建RP时指定。如果没有指定,系统将通过RP的数据保留时间来计算:

Retention Policy‘s DURATION Shard Group Duration
< 2days 1h
>= 2days and <= 6months 24h
> 6months 168h

不同shardgroup的时间跨度不会重叠。shardgroup实现了数据按时间分区,这样的设计可以:

  1. 一定程度上缓解数据写入热点问题
  2. 加快数据删除效率(将数据按照时间分割成小的粒度会使得数据过期实现非常简单,InfluxDB中数据过期删除的执行粒度就是Shard Group,系统会对每一个Shard Group判断是否过期,而不是一条一条记录判断。InfluxDB没有提供删除和更新数据的接口,数据只能通过RP进行删除)
  3. 加快数据按时间维度查找的效率(实现了将数据按照时间分区的特性。将时序数据按照时间分区是时序数据库一个非常重要的特性,基本上所有时序数据查询操作都会带有时间的过滤条件,比如查询最近一小时或最近一天,数据分区可以有效根据时间维度选择部分目标分区,淘汰部分分区)

修改及删除策略

1
2
3
4
5
# 修改策略
alter retention policy "autogen" on "exceptionless" duration 72h0m0s default;

# 删除策略
drop retention POLICY "2_hours" ON "exceptionless"

后序

说回大佬的问题,连接进influxdb:influx -host ip:port -precision rfc3339之后,查看当前库的存储策略:

1
2
3
4
> show retention policies on exceptionless;
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true

嗯,保存时间是永久。。再新建一个7天的策略,把原策略删除即可。

以上,完~

文章目录
  1. 前言
  2. 数据保存策略(Retention Policies)
    1. 查询策略
    2. 新建策略
      1. 示例
    3. ShardGroup
    4. 修改及删除策略
  3. 后序
|