基本概念
- 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