Linux 上用 pgAdmin 恢复数据的实用步骤
一 准备与判断
- 确认备份类型:是逻辑备份(如 pg_dump 生成的 .sql 或 自定义格式 .dump/.backup),还是物理备份(如 pg_basebackup 生成的数据目录拷贝)。不同类型恢复路径不同。
- 准备目标库:恢复前先创建同名空库(或使用已有库),并确保连接账号具备CREATE/INSERT等权限。
- 选择工具:逻辑备份优先用 pgAdmin 的 Restore… 或 psql/pg_restore;物理备份需停库并拷贝数据目录。
- 操作建议:在低峰时段执行,先备份当前库以便回滚,并在非生产环境验证流程。
二 图形界面恢复步骤 pgAdmin
- 连接服务器:在 pgAdmin 左侧树中连接到目标 PostgreSQL 实例。
- 创建目标库(如不存在):右键 Databases → Create → Database,设置名称与所有者。
- 执行恢复:右键目标库 → Restore… → 在对话框中:
- 选择备份文件(如 .sql、.dump/.backup);
- 选择恢复范围(仅数据/仅结构/全部);
- 如为自定义格式,按需设置角色映射、是否清理目标对象等高级选项;
- 点击 Restore 开始,完成后用查询或对象树校验数据。
- 适用场景:日常逻辑备份恢复、跨小版本迁移、选择性对象恢复。
三 命令行恢复与常见用法
- SQL 脚本(.sql)恢复:
- 命令:
psql -h <host> -U <user> -d <dbname> -f /path/file.sql
- 说明:适合全量结构与数据导入;若目标库非空,可先清理或在脚本中处理冲突。
- 自定义格式(.dump/.backup)恢复:
- 命令:
pg_restore -h <host> -U <user> -d <dbname> /path/file.dump
- 说明:支持并行、选择性对象恢复,更灵活;必要时加
--clean 先清理对象。
- 物理备份恢复(pg_basebackup):
- 步骤:停库 → 备份原数据目录 → 将备份目录拷贝到数据目录(如 /var/lib/postgresql//main)→ 启动服务并校验。
- 适用场景:大库/高性能恢复、需要**时间点恢复(PITR)**时配合 WAL 归档使用。
四 时间点恢复 PITR 与 WAL 归档
- 前提条件:数据库已开启 WAL 归档(配置
wal_level=replica/archive_mode=on 与 archive_command),并保留基础备份与归档 WAL。
- 基本流程:
- 准备基础备份(如
pg_basebackup);
- 将需要的 WAL 归档复制到归档目录;
- 使用
pg_restore 或基础备份+WAL 回放到指定时间点(PITR);
- 校验数据一致性与时间点准确性。
- 适用场景:误删表/行后按时间点找回数据、灾难恢复。
五 常见问题与排错要点
- 权限不足:确保恢复账号对目标库有CREATE/INSERT等权限;必要时用 postgres 超级用户。
- 目标库非空冲突:恢复前先备份当前库;或在恢复选项中启用清理对象(如
pg_restore --clean)。
- 连接与主机:确认 pg_hba.conf 允许来源主机访问,且
pgAdmin 连接参数(主机、端口、用户)正确。
- 备份文件问题:校验文件完整性与适用性,必要时先在测试库验证。
- 影响与窗口:恢复对系统有一定负载,建议在低峰时段执行并全程监控。