influxdb基础(五)——数据的备份与恢复(influxd backup/influxd restore)
一、前言
influxdb中有两种数据可以备份,一种是元数据meta,一种是db数据。meta元数据的备份是整个备份,不能拆分,而db数据的备份,可完整备份,也可为某个数据库或某个数据库的保留策略甚至为某个shard的数据备份,也可增量备份即备份一段时间范围内的数据。
二、备份和恢复元数据
元数据包含系统状态的内部信息,包括用户信息、数据库/分片元数据、CQs、RPs和订阅等。其只能一整个备份,不能拆分,恢复时也是一整个恢复,实际生产中需要注意恢复备份元数据会覆盖旧元数据,谨慎操作。
1、备份元数据
基本语法:
influxd backup <path-to-backup>
- 1
备份元数据,没有任何其他参数,备份将只转移当前状态的系统元数据到path-to-backup
。path-to-backup
为备份保存的目录,不存在会自动创建。
示例:
#将元数据备份到 ~/tmp/influx_backup_meta/
influxd backup ~/tmp/influx_backup_meta/
- 1
- 2
2、恢复元数据
基本语法:
influxd restore -metadir <path-to-meta-or-data-directory> <path-to-backup>
- 1
示例:
为了展示备份和恢复元数据的效果,当备份元数据成功后,从/var/lib/influxdb/ 目录下删除meta目录,即rm -rf /var/lib/influxdb/meta
,然后重启influxdb
,service influxdb restart
。此时再数据influx
连接客户端,验证用户名密码,查看databases时报了没有权限:
说明元数据删除了,接下来恢复之前备份的元数据:
# 转移tmp/influx_backup_meta下的备份数据到元数据原来的目录
#`-metadir` 原来元数据的路径
influxd restore -metadir /var/lib/influxdb/meta/ tmp/influx_backup_meta
- 1
- 2
- 3
重启influxdb
,再次连接influx
客户端,发现可以验证权限,并查看databses
、measurements
等元数据。
三、备份和恢复DB数据
备份DB数据是包含元数据的。
1、备份DB数据
基本语法:
通过influxd backup -h
查看backup
有哪些可选参数。
Usage: influxd backup [options] PATH
-portable # 在线备份,必选
-host <host:port> # 需要备份的influxdb服务机器地址,可选,Defaults to 127.0.0.1:8088.
-db <name> # 需要备份的db名称,可选,若没有指定,将备份所有数据库
-rp <name> # 备份某个保留策略的数据,未指定,则备份所有rp的数据。
-shard <id> # 需要备份的shard id,可选,若指定了备份shard,必须先选择rp
-start # 需要备份的数据的起始时间,timestamp (RFC3339 format). 不能和-since一起使用
-end # 需要备份的数据的结束时间,timestamp (RFC3339 format). 不能和-since一起使用
-since # 备份这个timestamp之后的数据,建议用-start <timestamp>代替
-skip-errors # 可选,当备份shards时,跳过备份失败的shard,继续备份其他shard。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
此时influxdb
中有数据库monitor
。
示例1:
备份monitor
库的所有数据。
influxd backup -portable -db monitor ~/tmp/influx_backup/
- 1
可以看到命令执行的过程中备份了元数据,两个shard为28、29的数据,34和35 没有数据不备份。
示例2:
备份monitor
库昨天的数据。
需要注意填写的时间需要是RFC3339
格式。
influxd backup -portable -db monitor -start 2020-11-01T13:24:52.085243953Z -end 2020-11-02T13:24:52.085243953Z ~/tmp/influx_backup_yesterday/
- 1
示例3:
只备份monitor
的shard=28
的数据。
influxd backup -portable -db monitor -rp rp_3_days -shard 28 ~/tmp/influx_backup_28/
- 1
2、恢复DB数据
influxd restore -h
查看restore可选参数:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1cDAdrej-1604415145939)(C:\Users\stefan\AppData\Roaming\Typora\typora-user-images\image-20201102235253418.png)]
Usage: influxd restore -portable [options] PATH
Options:
-portable #
-host <host:port>
-db <name> # 从备份数据的哪个库恢复数据Name of database to be restored from the backup
-newdb <name>
# 数据恢复到新库名称,若没有指定,选择-db <name>的名称。newdb必须不存在,恢复时会自动创建
-rp <name> # 从备份数据的哪个rp恢复数据,指定了-rp,必须指定-db
-newrp <name> #恢复数据新的rp名称,newrp必须存在。指定了-rp,未指定-newrp则使用-rp
-shard <id> # 需要恢复的shard,如果指定了'-db <db_name>' and '-rp <rp_name>',必须-shard<id>
PATH #备份数据文件list
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
示例1:
恢复~/tmp/influx_backup/
下monitor
库数据到新库new_monitor
。
influxd restore -portable -db monitor -newdb new_monitor ~/tmp/influx_backup/
- 1
示例2:
恢复~/tmp/influx_backup/
下monitor
库,rp
为rp_3_days
数据到新库new_monitor1
。
influxd restore -portable -db monitor -rp rp_3_days -newdb new_monitor1 ~/tmp/influx_backup/
- 1
示例3:
恢复~/tmp/influx_backup/
下monitor
库,rp
为rp_30_days
,shard
为29的数据到新库new_monitor1
,并重命名rp
的名称为rp_30days
。
influxd restore -portable -db monitor -rp rp_30_days -shard 29 -newdb new_monitor2 -newrp rp_04_days ~/tmp/influx_backup/
- 1
经测试,恢复数据不能指定新的rp
,不能恢复到已经存在的数据库。如真有这样的需求,可以先将数据恢复到一个临时不存在的库,然后通过insert into
将数据迁移到已经存在的库,最后删除临时库。
四、总结
- influxdb中可备份的数据有两种,一种是元数据
meta
,一种是db数据。 - 记不住参数可通过
influxd backup -h
、influxd restore -h
查看参数。 - 恢复数据不能修改旧数据的保留策略。
- 恢复数据只能恢复到不存在的库,无法恢复到已经存在的库。
PS: 如若文章中有错误理解,欢迎批评指正,同时非常期待你的评论、点赞和收藏。我是徐同学,愿与你共同进步!
参考:
官方文档:https://docs.influxdata.com/influxdb/v1.4/administration/backup_and_restore/
文章来源: blog.csdn.net,作者:徐同学呀,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_36586120/article/details/109481345
- 点赞
- 收藏
- 关注作者
评论(0)