influxdb是一款開源的時序資料庫,可以用作監控系統的數據存儲或用來存儲基於時序進行分析的業務系統的數據存儲。influxdb的部署及使用均比較簡單,但是集群(官方版集群已閉源)及高可用方案較少,所以後續測試完幾種方案後再推送給大家參考。
1、 安裝在官網選擇對應版本的庫進行安裝,例如當前最新文檔版本為1.8,部署在centos7 上
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rpmsudo yum localinstall influxdb-1.8.0.x86_64.rpm
2、 配置修改因為監控的數據量一般會比較大,所以相關數據的目錄要調整至空間最大的目錄。
安裝後默認的配置文件在/etc/influxdb/influxdb.conf
...[meta]dir = "/data/influxdb/meta"......[data]dir = "/data/influxdb/data"...wal-dir = "/data/influxdb/wal"......[hinted-handoff]...dir = "/data/influxdbhh"...
配置方面踩坑經驗:
max-row-limit不為0,會導致influxdb OOM,配置時設置為0
查詢限制參數不要修改,使用默認配置,否則會出現各種奇葩問題
寫入超時時間默認是10s,需要按需調大
3、 主要的一些概念Database
資料庫是個邏輯容器,包含了measurement、retention policies、continuous queries、time series data,類似於mysql的database。
Measurement
描述了相關數據的存儲結構,類似於mysql的table,但是不需要創建,寫入數據的時候自動創建。關於schema的設計建議參考:設計建議。
Timestamp
格式是:RFC3339 UTC。默認精確到納秒,可選。
Series
measurement, tag set, retention policy相同的數據集合算做一個 series。 這些數據存儲在內存中,如果series太多,會導致OOM。
Retention Policy
保留策略包括設置數據保存的時間以及在集群中的副本個數。默認配置是:RP是autogen,保留時間是永久,副本為1。這些配置在創建資料庫時可以修改。
Continuous Query
CQ是預先配置好的一些查詢命令,定期自動執行這些命令並將查詢結果寫入指定的measurement中,這個功能主要用於數據聚合。
Shard
存儲一定時間間隔的數據,每個目錄對應一個shard,目錄的名字就是shard id。每一個shard都有自己的cache、wal、tsm file以及compactor,目的就是通過時間來快速定位到要查詢數據的相關資源,加速查詢的過程,並且也讓之後的批量刪除數據的操作變得非常簡單且高效。
(參考 餓了麼Influxdb實踐之路)
4、 結語influxdb的部署是非常簡單的,本文的主要目的是推出influxdb,讓更多的小夥伴多一種可選的資料庫;
之前我們也介紹過prometheus(prometheus監控)來做監控,小夥伴們也可以將底層修改為influxdb進行存儲;
influxdb的時間精度更高(influxdbs精確到納秒,prometheus精確到微秒);
熟悉SQL的同學也可以比較快的上手influxdb,因其有類SQL。
大家有什麼問題歡迎多多交流。
本文轉載自微信公眾號【資料庫乾貨鋪】。