目录
为了防止因为操作错误或机器故障导致数据丢失,InfluxDB企业版提供了两个工具集:备份和还原备份工具集;导出和导入数据工具集。这两个工具集都可以用于数据备份和还原,但侧重点又有所不同。
上述两个工具集可用于以下场景:
备份和还原备份工具集支持以数据库、保留策略、分片3个维度选定要操作的数据,进行备份或还原备份操作,一般推荐使用备份和还原备份工具集。
注意:对于大型数据集(100G以上),推荐使用导出和导入数据工具集。
Influx 企业级版本备份恢复官方文档:Back up and restore | InfluxDB Enterprise 1.10 Documentation
备份是指创建存放在META节点上的元数据和DATA节点上的分片数据的副本,并将该副本存储在指定目录中。除了指定的数据副本,一个完整的备份还包括一个JSON格式的备份描述文件,描述具体的备份内容。所有备份文件的文件名包含一个UTC时间戳,表示创建备份的时间。
备份可以是完整备份或增量备份,默认情况下,生成的备份是增量备份。增量备份会创建自上次增量备份以来已更改的元数据和分片数据的副本。如果当前目录下不存在增量备份,系统将自动做完整备份。
注意:因为还原完整备份的命令与还原增量备份的命令不同,为防止还原备份时出错,建议将完整备份和增量备份放置在不同的目录中。
参考官方文档连接:Back up and restore data in InfluxDB v1.8 | InfluxDB OSS 1.8 Documentation
- influxd backup
- [ -database <db_name> ] # 指定需要备份的数据库名称,可选,若没有指定,将备份所有数据库
- [ -portable ] # 表示在线备份,必选
- [ -host <host:port> ] # influxdb服务所在的机器,默认为 127.0.0.1:8088
- [ -retention <rp_name> ] | [ -shard <shard_ID> -retention <rp_name> ] # 备份的保留策略,注意shard是挂在rp下的;我们需要备份的就是shard中的数据
- [ -start <timestamp> [ -end <timestamp> ] | -since <timestamp> ] # 备份指定时间段的数据
- <path-to-backup> # 备份文件的输出地址
-
- # 补充
- -host: fluxdb绑定地址(仅当从远程fluxdb主机创建备份时需要)
-
- -database/db:数据库名称(如果不指定数据库名称,则备份所有数据库)
-
- -rp:保留策略名称(如果不指定保留策略,则备份所有保留策略)
-
- -shard:分片ID(如果不指定分片ID,则备份所有分片)。需要保留策略。)
-
- -start:起始时间(如果不指定起始时间,则备份所有时间的数据。)
-
- -end/stop:停止时间(如果不指定停止时间,则备份到当前时间)。
将 influxdb 中的所有的数据库都备份到 /path/to/backup-directory 目录下:
influxd backup -portable /path/to/backup-directory
influxd backup -portable -host 203.0.113.0:8088 /path/to/backup-directory
假设此时 influxdb 中有数据库 monitor,将数据库monitor中的所有数据完整备份到指定目录中:
influxd backup -portable -db monitor /path/to/backup-directory
备份2022-01-01到2022-02-01内的数据:
influxd backup -portable -start 2022-01-01T00:00:00Z -stop 2022-02-01T00:00:00Z /path/to/backup-directory
influxd backup -portable -start 2022-01-01T00:00:00Z /path/to/backup-directory
influxd backup -portable -db example-db -rp example-retention-policy /path/to/backup-directory
influxd backup -portable -rp example-retention-policy -shard 123 /path/to/backup-directory
如何查看shard id 参考官方文档:Influx Query Language (InfluxQL) reference | InfluxDB OSS 1.8 Documentation
- influxd restore [ -db <db_name> ] # 待恢复的数据库(备份中的数据库名)
- -portable | -online
- [ -host <host:port> ] # influxdb 的服务器
- [ -newdb <newdb_name> ] # 恢复到influxdb中的数据库名
- [ -rp <rp_name> ] # 备份中的保留策略
- [ -newrp <newrp_name> ] # 恢复的保留策略
- [ -shard <shard_ID> ]
- <path-to-backup-files>
-
- # 补充说明
- -host: fluxdb绑定地址(仅在将备份恢复到远程fluxdb主机时需要)
-
- -db:数据库名称(如果不指定数据库名称,则恢复所有数据库)
-
- -newdb:新的数据库名称(当恢复一个已经存在的数据库时需要)
-
- -rp:保留策略名称(如果不指定保留策略,则恢复所有保留策略)
-
- -newrp:新的保留策略名称(在恢复已经存在的保留策略时需要)
-
- -shard:分片ID(如果不指定分片ID,则备份所有分片)。需要保留策略。)
influxd restore -portable /path/to/backup-directory
influxd restore -portable -host 203.0.113.0:8088 /path/to/backup-directory
influxd restore -portable -db example-db /path/to/backup-directory
如果想将备份恢复到一个已经存在的database中时,并不是那么简单的,这里采用的一个策略是先备份到一个临时的db中,然后将临时DB中的数据写入已存在的db中。
- #1. 将备份恢复到临时数据库example-tmp-db中
- influxd restore -portable -db example-db -newdb example-tmp-db /path/to/backup-directory
-
- #2. 登录连接influx客户端,从临时数据库查询数据,并将其写回现有数据库test中
- SELECT * INTO "test".autogen.:MEASUREMENT FROM "example-tmp-db".autogen./.*/ GROUP BY *
-
- #3. 删除临时数据库example-tmp-db
- DROP DATABASE "example-tmp-db"
influxd backup -portable -db example-db -rp example-retention-policy /path/to/backup-directory
influxd restore -portable -db example-db -rp example-rp -newrp example-new-rp /path/to/backup-directory
influxd backup -portable -db example-db -rp example-rp -shard 123 /path/to/backup-directory