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/

相关文章
相关标签/搜索