InfluxDB 2.0 数据备份恢复,导出/导入

发布时间: 2021-06-18 14:55:07 作者: 大象笔记

第一次物联网项目中使用 InfluxDB 2.0,心里最没底的就是数据安全性问题。 而且在 WSL Ubuntu 中有重启之后,永远无法启动的问题,除非清空数据。 所以,必须在线上生产服务器上反复测试数据备份流程。

InfluxDB 数据备份

influx backup 命令格式:

influx backup <backup-path> -t <root-token>

root token 在哪里获取?

官方文档的说明是:

The root authorization token (the token created for the first user in the InfluxDB setup process).

但是这个说法太模糊了,我只知道创建的初始用户的账户名,但是并不知道其 token 在哪里获取?

$ influx backup \
>   /home/zhongwei/backup_$(date '+%Y-%m-%d_%H-%M') \
>   -t xxxxxxxxxxxxxx 

2021-06-18T06:00:11.426764Z     info    Backing up KV store     {"log_id": "0UoR7sdW000", "path": "/home/zhongwei/backup_2021-06-18_14-00/20210618T060011Z.bolt"}
Error: Failed to download KV backup: read:authorizations is unauthorized.

我从 InfluxDB UI 管理后台,创建了一个 All Access Token (Data -> Tokens -> Generate Token), 倒是导出时报错 read:authorizations is unauthorized。

想了一下,可能是因为用了后来创建的 org 的 token,于是切换 org 到第一个创建的 org,再到 Data - Tokens 界面, 就能看到一个与初始用户同名的 token,那个 token 有所有权限。再次导出就可以了。

备份文件目录清单:

$ ls -lah backup_2021-06-18_14-08
total 88K
drwxr-xr-x 1 zhongwei zhongwei  512 Jun 18 14:08 .
drwxr-xr-x 1 zhongwei zhongwei  512 Jun 18 14:08 ..
-rw-r--r-- 1 zhongwei zhongwei  56K Jun 18 14:08 20210618T060816Z.bolt
-rw------- 1 zhongwei zhongwei 1009 Jun 18 14:08 20210618T060816Z.manifest
-rw-r--r-- 1 zhongwei zhongwei   23 Jun 18 14:08 20210618T060816Z.s1.tar.gz
-rw-r--r-- 1 zhongwei zhongwei  652 Jun 18 14:08 20210618T060816Z.s2.tar.gz
-rw-r--r-- 1 zhongwei zhongwei   23 Jun 18 14:08 20210618T060816Z.s3.tar.gz

InfluxDB 数据恢复

如果只是恢复时序数据,指定备份数据目录即可:

influx restore /backups/2020-01-20_12-00/

如果既要恢复时序数据,还要恢复用户,token 等,加上 full 参数:

influx restore /backups/2020-01-20_12-00/ --full

restore 时报错

使用

influx restore /backups/2020-01-20_12-00/

恢复数据时报错:

Error: Failed to create bucket "sunzhongwei.com": bucket with name sunzhongwei.com already exists.

加上 full 参数,就可以了。

但是,WSL 下,InfluxDB 一直报错:

2021-06-19T00:52:01.112888Z warn Error while freeing cold shard resources {"log_id": "0UpR9k~G000", "service": "storage-engine", "service": "store", "error": "cannot allocate memory", "db_shard_id": 2}

得线上测试一下是否也有同样的问题。

参考

我是一名山东烟台的开发者,联系作者