背景

  • 因为新申请了一个阿里云账号,需要把之前账号上面的kubernetes建的influxdb数据迁移过来;原来以为只要把 /var/lib/influxdb 目录拷贝到新的容器里面就可以了,后来才知道是要用官方的命令行来执行;命令包括 influxd backup (备份)、influxd restore (恢复); 因为用到了k8s,所以,还需要借助kubectl 工具来登录和下载上传数据;

操作方式

  1. 登录机器:
  2. kubectl exec -it -p source-b48d9958c-c9f2 -n default /bin/sh
  3. 备份:
  4. influxd backup -portable ./my_bak
  5. 拷贝数据:
  6. kubectl cp default/influxdb-0:home/my_bak /tmp/my_bak
  7. 上传数据:
  8. kubectl --kubeconfig="/Users/xxx/.kube/config_hqf" cp /tmp/my_bak default/travel-influxdb-0:var/lib/my_bak
  9. 登录目标机器:
  10. kubectl exec -it -p dest-b48d9958c-c9f2 -n default /bin/sh
  11. 恢复数据:
  12. influxd restore -portable ./my_bak
  13. 验证:
  14. influx
  15. show databases;
  16. use hqf;
  17. select * from hqf_rp.battery;

采坑

  • 如果要单独恢复某个数据库,建议可以先导到某个newdb,然后通过select 写入进来;具体参见官网操作;因为恢复是不能直接恢复到已经存在的数据库
  1. influxd backup -database hqf -host localhost:8088 ./influx_db_backup
  2. influxd restore -db hqf -newdb hqf_newdb -datadir /var/lib/influxdb/data ./influx_db_backup
  3. 然后再通过select方式来导入到hqf;并且删除hqf_newdb