influxdb 數據保留與備份恢復

1、 influxdb數據保留策略

influxdb做爲時序數據庫,主要用於和grafana以及telegraf結合部署監控系統;在監控項比較多的時候,數據保存多久就成了運維人員須要思考的問題,influxdb的數據保留策略(RP)就是用來定義數據在庫中保留時間的。node

1.一、 硬盤空間足夠大,數據一直保留

influxdb默認的數據保留策略
influxdb 數據保留與備份恢復
name:autogen (策略名)
duration:0s(0爲一直保存,最小保存1小時)
shardGroupDuration:168h (大於168小時查詢速度下降)
replicaN :1(在集羣中存儲每一個點的獨立副本的數量,其中1是數據節點的數量。)
default:是不是默認策略
influxdb默認的策略即是一直保存數據,大於1周的數據查詢會變慢,可是在生產環境中會出現一個問題,就是influxdb庫的每一個表默認只能存儲100000條數據,表滿以後新的數據便沒法入庫(max-values-per-tag limit exceeded)
influxdb 數據保留與備份恢復
當表寫滿100000條時,若是咱們想數據一直保留,須要修改influxdb配置文件中max-values-per-tag的參數爲0,表示無限制
influxdb 數據保留與備份恢復數據庫

1.二、 硬盤空間有限,保留一段時間內的數據

設置新的數據保留策略或修改默認的策略運維

2、 influxdb數據保留策略的使用

每個數據庫均可以設置單獨的數據保留策略,策略能夠有多個,dafault爲true的策略爲默認生效策略,新建或修改策略的生效時間通常爲半個小時,由於influxdb會每半個小時檢查一遍數據保留策略ide

2.一、建立新的數據保留策略

use run_status
CREATE RETENTION POLICY "oneday" ON "run_status" DURATION 24h REPLICATION 1 DEFAULT

Ps:Name爲oneday,庫名爲run_status,保留時間爲24小時,設置爲默認策略
Note:POLICY需大寫rest

2.二、查看策略

show retention policies on run_status

Ps:run_status爲數據庫名code

2.三、刪除策略

drop retention POLICY "oneday" ON "run_status"

2.四、修改策略

ALTER RETENTION POLICY "autogen" ON "run_status" DURATION 168h DEFAULT

Note:duration(數據保留時間)需大於等於shardGroupDuration時間,否則會報如下錯誤
influxdb 數據保留與備份恢復blog

3、數據備份

從1.5版本後,influxdb提供備份:flux

     在在線(實時)數據庫上運行備份和還原功能的選項。
         單個或多個數據庫的備份和還原功能,以及可選的時間戳過濾。
         能夠從InfluxDB Enterprise羣集導入數據
             能夠導入InfluxDB Enterprise數據庫的備份文件。

3.一、爲備份和還原服務啓用端口

在配置文件的root 級別,啓用遠程節點上的bind-address配置
influxdb 數據保留與備份恢復
默認配置爲127.0.0.1:8088,可根據實際狀況修改ci

官網示例
influxd backup -portable -database mydatabase -host <remote-node-IP>:8088 /tmp/mysnapshotrem

3.二、backup命令參數

格式:

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。

3.三、全量數據庫本機備份

influxd backup -portable /home/influxdb_backup

influxdb 數據保留與備份恢復

4、數據還原

經過將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/

相關文章
相關標籤/搜索