[Influxdb]Understand Retention Policies(RP)

RP是告訴influxdb資料要保留多久,只要資料過期將自動刪除,完全自動化無須人工介入。

influxdb不管在資料寫入、讀取和吞吐量都遠勝Elasticsearch,

處理大量資料批次寫入和資料彙總分析簡直是一塊蛋糕,

而且所需硬體資源相當低(CPU:2G*2,RAM:8G,SSD:256GB),

實務上,我選擇influxdb來儲存相關Server的metric(每10秒收集所有Server資料) ,

telegraf是我的logagent,使用grafana為UI,建立現代化儀表板,

了解每個SERVER的效能狀況,如果發生效能低落時也能自動通知(我測試過Email和Line),

同時你也正在建立每個系統效能基準線(baseline),

老兄我得告訴你,目前為止這一切真的很美好,anyway~~~讓我們回到RP主題:)

RP是一個容器,用來定義influxdb資料存放時間,一個資料庫可以有多個RP,但每個RP必須唯一,

我就來簡單說明一下RP

SHARD:

每個RP下會有很多SHARD,SHARD是實際存放influxdb的地方。

每個SHARD都會屬於一個SHARD Group,當然所有point也都在裡面。

SHOW RETENTION POLICIES ON "TST"

SHOW SHARDS

透過上面我這裡簡單解釋ID:28如下

TST資料庫資料保留時間約4個月(2856h0m0s),timestamp between  2017-05-08T00:00:00Z and 2017-05-15T00:00:00Z,

資料都存放在SHARD Group28,資料過期時間為2017-09-11T00:00:00Z,replicaN是指定資料備份數量(N:表示節點數量)

只要時間一到,influxdb將會自動移除,因實務上Server Log無須永久保存。

實際資料存放路徑

 

一些語法如下

-- Change duration and replication factor.

ALTER RETENTION POLICY "autogen" ON "TST" DURATION 17w REPLICATION 1

--Drop RP

DROP RETENTION POLICY "2_hours" ON "TST"

-- Set default retention policy for mydb to 1h.cpu.

ALTER RETENTION POLICY "1h.cpu" ON "mydb" DEFAULT

 

參考

https://docs.influxdata.com/influxdb/v1.2//troubleshooting/frequently-asked-questions/#retention-policies

Retention Policies

Retention Policy Management

InfluxDB Tops Cassandra in Time-Series Data & Metrics Benchmark

InfluxDB Markedly Outperforms Elasticsearch in Time-Series Data & Metrics Benchmark

influxdata/influxdb-comparisons

InfluxDB is 27x Faster vs MongoDB for Time-Series Workloads

Performance of InfluxDB on low-end hardware