首页/数据/备份与容灾速查/PostgreSQL pg_restore 恢复
数据库与云备份56 条

PostgreSQL pg_restore 恢复

恢复 custom / directory 格式逻辑备份:支持并行、按对象筛选与遇错策略;plain 格式直接用 psql 回放。

备份与容灾速查数据更新于 2026-10-13

pg_restore 是什么

pg_restore 用来恢复自定义与目录格式的逻辑备份,支持并行导入、按对象筛选以及遇错策略控制;纯文本 SQL 备份则直接用 psql 回放。它可以只恢复某张表或某个模式,这让误操作后的局部修复不必付出整库恢复的代价。

基本信息

适用格式自定义、目录与 tar 三种归档格式
并行恢复目录格式配合并行参数使用
对象筛选按表、按模式或按清单文件选择
错误策略默认继续并在末尾汇总报错,可改为遇错即停

恢复示例

恢复示例
# custom:全量恢复,先清空同名对象
pg_restore -d appdb --clean --if-exists /backup/appdb.dump
# directory:可并行恢复
pg_restore -d appdb -j 4 /backup/appdb.dir
# 只恢复某张表
pg_restore -d appdb -t orders /backup/appdb.dump
# plain 格式直接回放
psql -d appdb -f /backup/appdb.sql

常用选项

选项作用
列出清单查看归档内包含的对象列表
按表或模式只恢复指定对象,适合局部修复
遇错即停出现错误立即退出,避免得到部分恢复的库
清理与判断存在先删除再重建对象,配合存在性判断使用
并行度与目录格式配合,缩短大库导入时间

使用要点

  • 恢复到新库再切换:直接对生产库执行清理重建风险高,留出比对与回退空间
  • 先看对象清单:恢复前确认归档里有哪些表与模式,避免遗漏依赖对象
  • 角色与权限要预置:单库归档不含全局角色信息,目标实例需提前具备
  • 遇到报错先看是否可忽略:版本差异导致的对象不存在类报错,与数据错误要区别对待
  • 恢复后做统计与抽检:行数、索引与业务数据一致性都要核对
清理选项会先删除再重建对象;正式库执行前确认目标库,更稳妥的做法是恢复到新库、比对无误后再切换。

恢复前的准备清单

  • 确认归档格式与版本兼容:跨大版本恢复通常需要先用文本格式过渡
  • 确认目标库的字符集与排序规则与源一致
  • 预置角色与扩展:单库归档不包含全局对象与第三方扩展
  • 准备足够的临时空间与连接数,并行恢复对资源占用更高

易错点

  • 默认遇错继续只做汇总,容易得到『部分恢复』的库:上线恢复建议加遇错即停
  • 角色与权限不在单库 dump 内,目标实例需先具备对应角色
  • 直接在生产库上做清理重建,失败时同时失去现有数据
  • 并行恢复对对象之间有依赖时可能报错,需要按依赖顺序调整并行度

数据来源与参考

  • PostgreSQL 文档(pg_restore)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌