导出数据
//进入docker容器 postgres-db 容器名
docker exec -it postgres-db /bin/bash
//切换postgres用户
su - postgres
//导出命令
pg_dump -U postgres traffic > ./traffic.sql
//退出容器,进入宿主机
exit 两次
//从容器导出到宿主机
docker cp postgres-db:/var/lib/postgresql/traffic.sql ./
//通过ftcp,或者winscp下载文件到本地
导入数据
//从宿主机导入docker,通过winscp上传traffic.sql文件
//注意注意,将sql文件放入到quansheng-basic/postgresql/data下,容器和宿主机是映射的
//进入docker容器
docker exec -it postgres-db /bin/bash
//切换postgres用户
su - postgres
//进入到数据库中
psql
//查看数据库
\l
//如果存在库,则修改库名
ALTER DATABASE traffic RENAME TO traffic0815;
//改完名后,创建数据库
CREATE DATABASE traffic OWNER postgres;
问题:
ERROR: database “db1” is being accessed by other users
DETAIL: There are 17 other sessions using the database.
解决:
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datname=‘traffic’ AND pid<>pg_backend_pid();
//再次执行修改库名操作即可
// 退出数据库,进入容器中
exit
//导入数据库
psql -U postgres -d traffic -a -f “/var/lib/postgresql/data/traffic.sql”;
Docker容器中PostgreSQL数据迁移与权限调整
本文讲述了如何在Docker容器中使用`pg_dump`导出PostgreSQL数据,处理并发访问错误,调整数据库权限,以及导入数据的过程。涉及的关键步骤包括:切换用户、导出和导入SQL文件,以及解决数据库占用问题。
2882

被折叠的 条评论
为什么被折叠?



