1. 准备工作
备份文件:确保导出的文件是通过
pg_dump -Fc生成的(例如backup.dump)。权限:恢复用户需具有
CREATEDB权限(若需要重建数据库)。依赖项:如果备份中不包含角色、表空间等全局对象,需手动预先创建。
2. 恢复整库到新数据库
场景:将备份恢复到 新数据库(例如 new_db),并自动创建该库。
bash
复制
下载
pg_restore \ --host=localhost \ --port=5432 \ --username=postgres \ --dbname=postgres \ # 在默认数据库下执行恢复操作 --create \ # 自动创建目标数据库 --clean \ # 清理旧对象(如果存在) --verbose \ # 显示恢复过程 backup.dump
关键参数说明:
--create:根据备份中的元数据创建新数据库(数据库名需与备份时一致)。--clean:恢复前删除已有对象(避免冲突)。--dbname=postgres:指定连接到默认数据库执行恢复(因为目标库可能尚未存在)。
3. 恢复整库到现有数据库
场景:覆盖或追加到 已有数据库(例如 existing_db)。
bash
复制
下载
pg_restore \ --host=localhost \ --port=5432 \ --username=postgres \ --dbname=existing_db \ # 目标数据库名 --jobs=4 \ # 并行恢复(加快速度) --verbose \ backup.dump
关键参数说明:
--jobs=N:启用并行恢复(线程数建议与 CPU 核心数匹配)。注意:若备份与原库有冲突(如重复表),需添加
--clean先删除旧对象。
4. 处理全局对象(角色、表空间等)
默认情况下,pg_dump 不会备份全局对象(如角色、表空间)。若需恢复这些对象:
步骤 1:单独备份全局对象
bash
复制
下载
pg_dumpall \ --globals-only \ --file=globals.sql \ --username=postgres
步骤 2:先恢复全局对象
bash
复制
下载
psql -U postgres -f globals.sql
步骤 3:再恢复数据库
bash
复制
下载
pg_restore --dbname=existing_db --create --clean backup.dump
5. 常见问题与解决方案
Q1:恢复时报错“数据库已存在”
原因:未使用
--create或目标库已存在。解决:
bash
复制
下载# 手动删除旧库 psql -U postgres -c "DROP DATABASE IF EXISTS old_db;" # 再执行恢复 pg_restore --dbname=postgres --create backup.dump
Q2:权限不足导致恢复失败
原因:恢复用户缺少
CREATEDB或对象操作权限。解决:
sql
复制
下载-- 赋予权限(以超级用户执行) ALTER USER your_user WITH CREATEDB;
Q3:表空间路径不存在
原因:备份中的表空间路径与恢复环境不一致。
解决:
bash
复制
下载# 恢复前创建表空间目录 mkdir -p /custom/tablespace/path chown postgres:postgres /custom/tablespace/path
6. 完整恢复流程示例
bash
复制
下载
# 1. 恢复全局对象(角色、表空间) psql -U postgres -f globals.sql # 2. 创建目标数据库(若未使用 --create) psql -U postgres -c "CREATE DATABASE new_db;" # 3. 并行恢复数据 pg_restore \ --dbname=new_db \ --jobs=4 \ --verbose \ backup.dump
总结
推荐命令:
bash
复制
下载pg_restore --dbname=postgres --create --clean --verbose backup.dump
关键点:
使用
--create自动建库。并行恢复(
--jobs=N)显著提升速度。确保全局对象(如角色)预先恢复。
通过以上步骤,可以高效、安全地完成 PostgreSQL 整库恢复。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




