InfluxDB—資料保留策略(Retention Policies)介紹

grantpole發表於2020-11-17

InfluxDB每秒可以處理成千上萬條資料,要將這些資料全部儲存下來會佔用大量的儲存空間,有時我們可能並不需要將所有歷史資料進行儲存並且InfluxDB本身不提供資料的刪除操作,因此,InfluxDB推出了資料保留策略RP(Retention Policies),用來讓我們自定義資料的保留時間。

建立RP

當執行create database時,會建立一個名叫autogen的retention policy,duration=0 表示它會永久保留資料。

> create database testdb
> use testdb
Using database testdb
> show retention policies
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true

可以通過create retention policy的命令來建立一個新的retention policy

CREATE RETENTION POLICY "one_month" ON "testdb" DURATION 30d REPLICATION 1 DEFAULT

其中:

  • one_month:策略名
  • testdb:具體的資料庫名
  • 30d:儲存 30 天,30 天之前的資料將被刪除,它具有各種時間引數,比如:h(小時),w(星期)
  • REPLICATION 1:副本個數,這裡填 1 就可以了
  • DEFAULT 設為預設的策略
  • shardGroupDuration :表示一個shard檔案所存的資料的時間跨度
> show retention policies
name      duration shardGroupDuration replicaN default
----      -------- ------------------ -------- -------
autogen   0s       168h0m0s           1        false
one_month 720h0m0s 24h0m0s            1        true

PS : 如果切換資料庫的retention policy的話,已有的資料會被全部刪掉。

shardGroupDuration的取值:
在這裡插入圖片描述

更新RP

使用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

刪除RP

DROP RETENTION POLICY "rp_name" ON "db_name"

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
InfluxDB—資料保留策略(Retention Policies)介紹

相關文章