一、 influxdb数据保留策略

influxdb作为时序数据库,主要用于和grafana以及telegraf结合部署监控系统;在监控项比较多的时候,数据保存多久就成了运维人员需要思考的问题,influxdb的数据保留策略(RP)就是用来定义数据在库中保留时间的。

1.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 数据保留与备份恢复_第1张图片
当表写满100000条时,如果我们想数据一直保留,需要修改influxdb配置文件中max-values-per-tag的参数为0,表示无限制
influxdb 数据保留与备份恢复_第2张图片

1.2、 硬盘空间有限,保留一段时间内的数据

设置新的数据保留策略或修改默认的策略

二、 influxdb数据保留策略的使用

每一个数据库都可以设置单独的数据保留策略,策略可以有多个,dafault为true的策略为默认生效策略,新建或修改策略的生效时间一般为半个小时,因为influxdb会每半个小时检查一遍数据保留策略

2.1、创建新的数据保留策略

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

Ps:Name为oneday,库名为run_status,保留时间为24小时,设置为默认策略
Note:POLICY需大写

2.2、查看策略

show retention policies on run_status

Ps:run_status为数据库名

2.3、删除策略

drop retention POLICY "oneday" ON "run_status"

2.4、修改策略

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

Note:duration(数据保留时间)需大于等于shardGroupDuration时间,不然会报以下错误
influxdb 数据保留与备份恢复

三、数据备份

从1.5版本后,influxdb提供备份:

         在在线(实时)数据库上运行备份和还原功能的选项。
         单个或多个数据库的备份和还原功能,以及可选的时间戳过滤。
         可以从InfluxDB Enterprise群集导入数据
             可以导入InfluxDB Enterprise数据库的备份文件。

3.1、为备份和还原服务启用端口

在配置文件的root 级别,启用远程节点上的bind-address配置
influxdb 数据保留与备份恢复
默认配置为127.0.0.1:8088,可根据实际情况修改

官网示例
influxd backup -portable -database mydatabase -host :8088 /tmp/mysnapshot

3.2、backup命令参数

格式:

influxd backup -portable [ arguments ] 

参数:

    [ -database  ] :指明要备份的数据库,如果未指定,则备份所有数据库。
    [ -portable ] :以较新的InfluxDB Enterprise兼容格式生成备份文件。
note:如果未指定-portable,则使用默认的旧备份实用程序 - 仅备份主机Metastore,除非指定了-database。

    [ -host  ] :指明主机与端口,默认值为“127.0.0.1:8088”。 远程连接所必需的。 示例:-host 127.0.0.1:8088

    [-retention ]:备份的保留策略。 如果未指定,则默认使用所有保留策略。 如果指定,则需要-database。
    [-shard ]:要备份的分片ID。 如果指定,则需要-retention 。
    [-start ]:包括以指定时间戳(RFC3339格式)开头的所有点。 与-since不兼容。 示例:-start 2015-12-24T08:12:23Z
    [-end ]]:排除指定时间戳(RFC3339格式)后的所有结果。 与-since不兼容。 如果在没有-start的情况下使用,则将从1970-01-01开始备份所有数据。 示例:-end 2015-12-31T08:12:23Z
    [-since ]:在指定的时间戳RFC3339格式之后执行增量备份。 除非传统备份支持需要,否则请使用-start。

3.3、全量数据库本机备份

influxd backup -portable /home/influxdb_backup

influxdb 数据保留与备份恢复_第3张图片

四、数据还原

通过将restore命令与-portable参数(表示新的Enterprise兼容备份格式)或-online标志(表示旧备份格式)一起启动联机还原过程

格式

influxd restore [ -db  ]
    -portable | -online
    [ -host  ]
    [ -newdb  ]
    [ -rp  ]
    [ -newrp  ]
    [ -shard  ]
        

参数

 -portable:为InfluxDB OSS使用新的与Enterprise兼容的备份格式。建议使用而不是-online。在InfluxDB Enterprise上创建的备份可以恢复到InfluxDB OSS实例。

    -online:使用旧版备份格式。仅在不能使用较新的便携式选项时使用。

    [-host ]:InfluxDB OSS实例的主机和端口。默认值为“127.0.0.1:8088”。远程连接所必需的。示例:-host 127.0.0.1:8088

    [-db  | -database ]:要从备份还原的数据库的名称。如果未指定,则将还原所有数据库。

    [-newdb ]:将在目标系统上导入存档数据的数据库的名称。如果未指定,则使用-db的值。新数据库名称必须对目标系统是唯一的。

    [-rp ]:要还原的备份中的保留策略的名称。需要设置-db。如果未指定,将使用所有保留策略。

    [-newrp ]:要在目标系统上创建的保留策略的名称。需要设置-rp。如果未指定,则使用-rp值。

    [-shard ]:要还原的分片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/