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

文章目录

    第一次物联网项目中使用 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}

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

    参考

    • https://docs.influxdata.com/influxdb/v2.0/backup-restore/backup/
    • https://docs.influxdata.com/influxdb/v2.0/backup-restore/restore/

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式