Influxdb的retention policy

基本概念

  • DURATION:這個描述了保留策略要保留多久的數據。這個機制對於時序型的數據來講,是非常有用的。
  • SHARD:這個是實際存儲influxdb數據的單元。每個shard保留一個時間片的數據,默認是7天。如果你保存1年的數據,那麼influxdb會把連續7天的數據放到一個shard中,使用好多個shard來保存數據。
  • SHARD DURATION:這個描述了每個shard存放多數據的時間片是多大。默認7天。需要注意的是,當數據超出了保留策略後,influxdb並不是按照數據點的時間一點一點刪除的,而是會刪除整個shard group。
  • SHARD GROUP:顧名思義,這個一個shard group包含多個shard。對於開源版的influxdb,這個其實沒有什麼區別,可以簡單理解爲一個shard group只包含一個shard,但對於企業版的多節點集羣模式來講,一個shard group可以包含不同節點上的不同shard,這使得influxdb可以保存更多的數據。
  • SHARD REPLICATION:這個描述了每個shard有幾個副本。對於開源版來講,只支持單副本,對於企業版來講,每個shard可以冗餘存儲,這樣可以避免單點故障。

關於SHARD DURATION

influxdb官方建議,如果保留期限低於2天,shard duration設置爲1h,如果保留期限位於2天到6個月之間,shard duration設置爲1d,如果保留期限大於6個月,shard duration設置爲7d,

創建retention policy

當執行create database時,會創建一個名叫autogen的retention policy,它會永久保留數據

> create database testdb
> use testdb
Using database testdb
> show retention policies
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

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

然後再查看一下retention policy

> show retention policies
name      duration shardGroupDuration replicaN default
----      -------- ------------------ -------- -------
autogen   0s       168h0m0s           1        false
one_month 720h0m0s 24h0m0s            1        true
  • 1
  • 2
  • 3
  • 4
  • 5

需要注意的是,如果切換數據庫的retention policy的話,已有的數據會被全部刪掉。

更新retention policy

如果想修改retention policy的數據保留時間,可以使用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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

更新retention policy的保留時間的話,數據不會全部丟失。

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章