前言
在 PostgreSQL 中,.backup 文件通常是由 pg_dump 工具生成的自定义格式(Custom Format) 逻辑备份文件。它不是纯文本 SQL,而是经过压缩的二进制归档,必须使用 pg_restore 进行恢复
文件生成
使用 pg_dump 命令,关键在于 -F c 参数指定自定义格式,并通过 -f 指定以 .backup 结尾的文件名。
1pg_dump -U <用户名> -h <主机> -p <端口> -F c -b -v -f "/path/to/your_database.backup" <数据库名>
关键参数说明:
-F c:输出为自定义格式(Custom),这是生成.backup文件的核心参数。该格式默认启用 zlib 压缩,且支持恢复时选择性还原对象。-b:包含大对象(Blobs)。-v:显示详细备份过程。-f:指定输出文件路径和名称。注意:.backup只是用户约定的扩展名,文件格式完全由-F参数决定,而非扩展名本身。
恢复 .backup 文件
.backup 文件不能用 psql 直接导入,必须使用 pg_restore:
1# 恢复到已存在的数据库
2pg_restore -U <用户名> -d <目标数据库名> -v "/path/to/your_database.backup"
3
4# 恢复前清除目标库中已有对象
5pg_restore -U <用户名> -d <目标数据库名> -c -v "/path/to/your_database.backup"
注意事项:
- 恢复前需提前创建好目标数据库(除非使用
-C参数让 pg_restore 自动创建)。 - 若需并行恢复以加快速度,可添加
-j <线程数>参数(仅自定义格式和目录格式支持)。
docker容器恢复文件
把文件拷贝到容器内部
docker cp /root/luban_2026_1101_0400.backup 容器:/home
然后恢复
docker exec -it 66353b66c9f0 pg_restore -U postgres -d mydb -c -v /home/luban_2026_1101_0400.backup
然后输入postgressql密码
总结
可以使用该方法备份和恢复数据