一、 influxdb数据保留策略
influxdb作为时序数据库,主要用于和grafana以及telegraf结合部署监控系统;在监控项比较多的时候,数据保存多久就成了运维人员需要思考的问题,influxdb的数据保留策略(RP)就是用来定义数据在库中保留时间的。
1.1、 硬盘空间足够大,数据一直保留
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,表示无限制
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时间,不然会报以下错误
三、数据备份
从1.5版本后,influxdb提供备份:
在在线(实时)数据库上运行备份和还原功能的选项。
单个或多个数据库的备份和还原功能,以及可选的时间戳过滤。
可以从InfluxDB Enterprise群集导入数据
可以导入InfluxDB Enterprise数据库的备份文件。
3.1、为备份和还原服务启用端口
在配置文件的root 级别,启用远程节点上的bind-address配置
默认配置为127.0.0.1:8088,可根据实际情况修改
官网示例
influxd backup -portable -database mydatabase -host
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
四、数据还原
通过将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
全量数据库本机还原
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/