目标

在两台服务器中的容器中分别存在两个pgsql服务器,需要从A端备份数据库到B端

参考

docker复制文件

Docker-宿主机与容器之间的文件拷贝_呼啦啦dxy的博客-CSDN博客_宿主机文件拷贝到docker容器

传输文件

Linux 两台服务器之间传输文件和文件夹四种方式_weixin_44256848的博客-CSDN博客_linux传输文件到另一台服务器

备份数据库

如何备份PostgreSQL数据库 - 码农教程

命令

1、备份数据库

pg_dump -U <user_name> <dbname> > <file_path>

# 进入containerA
sudo docker exec -u root -it a9bc4a227cb9 bash
​
# 备份打包 
pg_dump -U postgres changzhou_agriculture02 > tmp/changzhou_agriculture.bak

2、数据库文件迁移

#容器>>>>>宿主机  //a9bc4a227cb9 是源pgsql容器id
docker cp a9bc4a227cb9:/tmp/changzhou_agriculture.bak /tmp/
​
#主机>>>>>主机(如果连接失败,可以使用finalshell等工具手动移动)
scp /tmp/changzhou_agriculture.bak  root@10.0.10.123:/tmp/
​
宿主机>>>>>容器  //6dca1aa96625是目标pgsql容器id
docker cp /tmp/changzhou_agriculture.bak  6dca1aa96625:/tmp/

3、恢复数据库

psql -U <user_name> <dbname> < <file_path>;

# 进入containerB
sudo docker exec -u root -it 6dca1aa96625 bash
​
#先创建数据
CREATE DATABASE changzhou_agriculture;
​
#恢复数据库
psql -U postgres changzhou_agriculture < tmp/changzhou_agriculture.bak;

#或者导入单表
psql -U postgres -d dbname < /tmp/filename.sql

导入结果

更多推荐