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
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/