Posrgresql恢复.backup文件

0 阅读2分钟

前言

在 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密码

总结

可以使用该方法备份和恢复数据