背景
- 因为新申请了一个阿里云账号,需要把之前账号上面的kubernetes建的influxdb数据迁移过来;原来以为只要把 /var/lib/influxdb 目录拷贝到新的容器里面就可以了,后来才知道是要用官方的命令行来执行;命令包括 influxd backup (备份)、influxd restore (恢复); 因为用到了k8s,所以,还需要借助kubectl 工具来登录和下载上传数据;
操作方式
登录机器:
kubectl exec -it -p source-b48d9958c-c9f2 -n default /bin/sh
备份:
influxd backup -portable ./my_bak
拷贝数据:
kubectl cp default/influxdb-0:home/my_bak /tmp/my_bak
上传数据:
kubectl --kubeconfig="/Users/xxx/.kube/config_hqf" cp /tmp/my_bak default/travel-influxdb-0:var/lib/my_bak
登录目标机器:
kubectl exec -it -p dest-b48d9958c-c9f2 -n default /bin/sh
恢复数据:
influxd restore -portable ./my_bak
验证:
influx
show databases;
use hqf;
select * from hqf_rp.battery;
采坑
- 如果要单独恢复某个数据库,建议可以先导到某个newdb,然后通过select 写入进来;具体参见官网操作;因为恢复是不能直接恢复到已经存在的数据库
influxd backup -database hqf -host localhost:8088 ./influx_db_backup
influxd restore -db hqf -newdb hqf_newdb -datadir /var/lib/influxdb/data ./influx_db_backup
然后再通过select方式来导入到hqf;并且删除hqf_newdb