Ubuntu 上使用 pgAdmin 进行数据库恢复
一 准备与前提
- 确认 PostgreSQL 服务已启动:sudo systemctl status postgresql;如未运行可执行 sudo systemctl start postgresql。
- 若 pgAdmin 报 “Utility file not found”,请在菜单 File → Preferences → Paths → PostgreSQL Binary Path 中,将路径指向 PostgreSQL 的 bin 目录(例如 /usr/bin 或 /usr/lib/postgresql/<版本>/bin)。
- 确保备份文件可用且完整,并优先在非生产环境验证恢复流程。
- 恢复前建议低峰时段操作,并做好全量备份。
二 使用 pgAdmin 图形界面恢复
- 连接到目标 Server,在左侧树形导航中右键目标 Database,选择 Restore…。
- 在 General 页:
- 选择备份文件(常见为 .backup 或 .sql),设置 Format(与备份时一致,如 Custom、Plain、Directory)。
- 指定连接角色(Role)。
- 在 Data/Objects 页:按需勾选要恢复的对象范围(如 pre-data、data、post-data)。
- 在 Options 页:可设置是否在遇到错误时继续、是否包含 OID 等。
- 点击 Restore 开始恢复,完成后在右下角查看结果。
三 常见场景与操作要点
- 新建空库再恢复:若备份为自定义格式(Custom),通常先新建同名空库,再对该库执行 Restore;若备份为 Plain SQL(.sql),也可直接在目标库上 Restore(会执行 DDL/DML)。
- 覆盖已有数据:同名对象会被恢复过程修改或替换,务必提前做好全量备份。
- 部分恢复:在 Data/Objects 中仅勾选需要的 schema/table,实现局部恢复。
- 权限与连接:确保用于恢复的 数据库角色具备相应权限,且 pg_hba.conf 允许来自 pgAdmin 主机的连接;必要时调整后再重启 PostgreSQL。
四 命令行恢复备选
- 自定义格式(Custom):pg_restore -h localhost -U postgres -d dbname dbname.backup
- 纯文本 SQL:psql -h localhost -U postgres -d dbname -f dbname.sql
- 物理备份(Basebackup):停止实例后清空数据目录,将备份解压到数据目录并启动;或使用 pg_basebackup 配合复制槽进行备机重建。
五 故障排查要点
- “Utility file not found”:在 Preferences → Paths 修正 PostgreSQL Binary Path。
- 连接或权限失败:检查 pg_hba.conf、服务状态与网络连通性,必要时重启 PostgreSQL。
- 查看日志定位问题:pgAdmin 日志通常在 ~/.pgadmin/pgadmin4.log;PostgreSQL 日志位于数据目录的 postgresql-<日期>.log。