1. 进入 PostgreSQL 容器
首先,通过 docker exec 命令进入运行 PostgreSQL 的容器:
docker exec -it <container_name> bash
2. 运行 pg_dump
使用 pg_dump 备份数据库。例如:
pg_dump -U <username> -d <database_name> -F c -b -v -f /backup.dump
参数说明:
- -U
:PostgreSQL 用户名。 - -d <database_name>:数据库名称。
- -F c:备份格式为自定义格式。
- -b:包括大对象。
- -v:显示详细信息。
- -f /path/to/backup/file:指定输出文件的路径。此例直接指定为根目录下的
backup.dump
文件
因为使用了-F c,backup.dump实际上是一个压缩的二进制文件。
3. 退出容器
完成后,退出容器:
exit
4. 将备份文件拷出容器
使用 docker cp 将备份文件拷贝到宿主机:
docker cp <container_name>:/path/to/backup/file/backup /local/path
- /path/to/backup/file 为容器中的文件路径
- /local/path 为本地文件路径
5. 导入到数据库
pg_restore -U root -d file_browser -v /path/to/backup.dump
# 或者
pg_restore --no-owner --clean -U <username> -d file_browser /path/to/backup.dump
- –no-owner:忽略尝试更改数据库所有者的命令。
- –clean:在还原前删除目标数据库中的现有对象。
6 备份数据表而不用备份数据库
如果是备份某个表,使用下面命令:
pg_dump -U root -d my_database -t my_table -F c -b -v -f /backup/my_table.dump
- my_database 数据库名
- my_table 数据表名
- /backup/my_table.dump 备份路径
如果需要备份多个表,可以重复使用 -t 参数:
pg_dump -U postgres -d my_database -t table1 -t table2 -F c -b -v -f /backup/tables.dump
可以添加 –data-only 或 –schema-only 参数进行更精细的控制。
注意事项
引用表名
如果表名包含特殊字符或使用了大小写敏感的命名方式,需用双引号括起来。
PostgreSQL数据库的版本需要相同
尽量保证数据库版本相同。
关注我获取更多资讯

📢 公众号

💬 个人号