服务器之间,迁移Thingsboard起在docker里面的psql数据库

1 进入需要被迁移的docker的psql数据库

docker exec -it 容器id /bin/bash

2 备份thingsboard数据库,到当前目录下,文件名为psql.bak

pg_dump -h localhost -U postgres thingsboard > psql.bak

3 从容器中出来,在宿主机执行命令,将psql.bak文件移动到宿主机的/home/file文件夹下

#docker cp containerID:container_path host_path
docker cp 579e1e11ba4a:psql.bak /home/file

4 将备份文件远程传输到其他服务器

#scp -P port filename user@ip:/path
scp -P 22 psql.bak  root@192.168.1.1:/home/

5 到目标服务器192.168.1.1的home目录下,启动一个psql容器

docker run -it  --name thingsboard-postgresql -v thingsboards:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres:11.7
ae382d1a641a

6 在新启动的psql容器内新建一个名为thingsboard的数据库(我是用navicat连接psql数据库,新建了一个thingsboard数据库,方便快捷)
7 将thingsboard配置文件修改为新的psql数据库ip和信息
centos重新配置thingsboard的psql数据库
重新加载数据库文件,启动thingsboard

# --loadDemo option will load demo data: users, devices, assets, rules, widgets.
#重载数据库文件
/usr/share/thingsboard/bin/install/install.sh --loadDemo
#启动thingsboard服务
service thingsboard start

8 将新建的thingsboard删了,是的!删了!重新建一个!这时候新建的thingsboard数据库里面是空的(如果不删数据库重新建,直接恢复备份会出现重复数据,thingsboard无法正常运行,所以我的处理办法是,删了重建一个空的数据库,这样备份会成功,thinsboard也会重启成功)
删除时出现There are 2 other sessions using the database处理办法
9 将home文件夹下的psql.bak备份文件复制到刚才启动的psql容器的/目录下

[root@km1 home]#docker cp psql.bak ae382d1a641a:/

10 进入psql容器

docker exec -it ae382d1a641a /bin/bash

11 用psql.bak恢复数据

psql -h localhost -U postgres -d thingsboard < psql.bak

12 无需重启thingsboard,此时数据已重新恢复,可自行验证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值