influxdb做爲時序數據庫,主要用於和grafana以及telegraf結合部署監控系統;在監控項比較多的時候,數據保存多久就成了運維人員須要思考的問題,influxdb的數據保留策略(RP)就是用來定義數據在庫中保留時間的。node
influxdb默認的數據保留策略
name:autogen (策略名)
duration:0s(0爲一直保存,最小保存1小時)
shardGroupDuration:168h (大於168小時查詢速度下降)
replicaN :1(在集羣中存儲每一個點的獨立副本的數量,其中1是數據節點的數量。)
default:是不是默認策略
influxdb默認的策略即是一直保存數據,大於1周的數據查詢會變慢,可是在生產環境中會出現一個問題,就是influxdb庫的每一個表默認只能存儲100000條數據,表滿以後新的數據便沒法入庫(max-values-per-tag limit exceeded)
當表寫滿100000條時,若是咱們想數據一直保留,須要修改influxdb配置文件中max-values-per-tag的參數爲0,表示無限制
數據庫
設置新的數據保留策略或修改默認的策略運維
每個數據庫均可以設置單獨的數據保留策略,策略能夠有多個,dafault爲true的策略爲默認生效策略,新建或修改策略的生效時間通常爲半個小時,由於influxdb會每半個小時檢查一遍數據保留策略ide
use run_status CREATE RETENTION POLICY "oneday" ON "run_status" DURATION 24h REPLICATION 1 DEFAULT
Ps:Name爲oneday,庫名爲run_status,保留時間爲24小時,設置爲默認策略
Note:POLICY需大寫rest
show retention policies on run_status
Ps:run_status爲數據庫名code
drop retention POLICY "oneday" ON "run_status"
ALTER RETENTION POLICY "autogen" ON "run_status" DURATION 168h DEFAULT
Note:duration(數據保留時間)需大於等於shardGroupDuration時間,否則會報如下錯誤
blog
從1.5版本後,influxdb提供備份:flux
在在線(實時)數據庫上運行備份和還原功能的選項。 單個或多個數據庫的備份和還原功能,以及可選的時間戳過濾。 能夠從InfluxDB Enterprise羣集導入數據 能夠導入InfluxDB Enterprise數據庫的備份文件。
在配置文件的root 級別,啓用遠程節點上的bind-address配置
默認配置爲127.0.0.1:8088,可根據實際狀況修改ci
官網示例
influxd backup -portable -database mydatabase -host <remote-node-IP>:8088 /tmp/mysnapshotrem
格式:
influxd backup -portable [ arguments ] <path-to-backup>
參數:
[ -database <db_name> ] :指明要備份的數據庫,若是未指定,則備份全部數據庫。 [ -portable ] :以較新的InfluxDB Enterprise兼容格式生成備份文件。 note:若是未指定-portable,則使用默認的舊備份實用程序 - 僅備份主機Metastore,除非指定了-database。 [ -host <host:port> ] :指明主機與端口,默認值爲「127.0.0.1:8088」。 遠程鏈接所必需的。 示例:-host 127.0.0.1:8088 [-retention <rp_name>]:備份的保留策略。 若是未指定,則默認使用全部保留策略。 若是指定,則須要-database。 [-shard <ID>]:要備份的分片ID。 若是指定,則須要-retention <name>。 [-start <timestamp>]:包括以指定時間戳(RFC3339格式)開頭的全部點。 與-since不兼容。 示例:-start 2015-12-24T08:12:23Z [-end <timestamp>]]:排除指定時間戳(RFC3339格式)後的全部結果。 與-since不兼容。 若是在沒有-start的狀況下使用,則將從1970-01-01開始備份全部數據。 示例:-end 2015-12-31T08:12:23Z [-since <timestamp>]:在指定的時間戳RFC3339格式以後執行增量備份。 除非傳統備份支持須要,不然請使用-start。
influxd backup -portable /home/influxdb_backup
經過將restore命令與-portable參數(表示新的Enterprise兼容備份格式)或-online標誌(表示舊備份格式)一塊兒啓動聯機還原過程
influxd restore [ -db <db_name> ] -portable | -online [ -host <host:port> ] [ -newdb <newdb_name> ] [ -rp <rp_name> ] [ -newrp <newrp_name> ] [ -shard <shard_ID> ] <path-to-backup-files> <path-to-backup-files>
-portable:爲InfluxDB OSS使用新的與Enterprise兼容的備份格式。建議使用而不是-online。在InfluxDB Enterprise上建立的備份能夠恢復到InfluxDB OSS實例。 -online:使用舊版備份格式。僅在不能使用較新的便攜式選項時使用。 [-host <host:port>]:InfluxDB OSS實例的主機和端口。默認值爲「127.0.0.1:8088」。遠程鏈接所必需的。示例:-host 127.0.0.1:8088 [-db <db_name> | -database <db_name>]:要從備份還原的數據庫的名稱。若是未指定,則將還原全部數據庫。 [-newdb <newdb_name>]:將在目標系統上導入存檔數據的數據庫的名稱。若是未指定,則使用-db的值。新數據庫名稱必須對目標系統是惟一的。 [-rp <rp_name>]:要還原的備份中的保留策略的名稱。須要設置-db。若是未指定,將使用全部保留策略。 [-newrp <newrp_name>]:要在目標系統上建立的保留策略的名稱。須要設置-rp。若是未指定,則使用-rp值。 [-shard <shard_ID>]:要還原的分片ID。若是指定,則須要-db和-rp![](https://s1.51cto.com/images/blog/201906/11/400909a34a1c65241b4f0171a65f5e16.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
influxd restore -portable /home/influxdb_backup
參考文章:官方文檔
https://docs.influxdata.com/influxdb/v1.7/query_language/database_management/#retention-policy-management
https://docs.influxdata.com/enterprise_influxdb/v1.7/administration/config-data-nodes/#max-values-per-tag-100000
https://docs.influxdata.com/influxdb/v1.7/administration/backup_and_restore/