温馨提示×

如何在Linux上使用pgAdmin进行数据库恢复

小樊
38
2025-12-09 23:00:34
栏目: 智能运维

在 Linux 上使用 pgAdmin 进行数据库恢复

一、准备与前提

  • 安装并登录 pgAdmin 4(常见访问地址为 http://<服务器IP>:5050),确保已创建目标 服务器连接目标数据库(若从空库恢复,先新建数据库并设置正确的 所有者/Owner)。
  • 准备与备份方式匹配的备份文件:
    • 逻辑备份:.sql(纯文本 SQL 脚本)、.dump/.backup(由 pg_dump 生成,配合 pg_restore 使用)。
    • 物理备份:目录形式的 basebackup(由 pg_basebackup 生成,不走 pgAdmin 图形界面恢复)。
  • 权限与连接:用于恢复的数据库用户需具备相应权限(如 CREATEDB、对目标库的 OWNERSUPERUSER 等),并且 pg_hba.conf 允许来自 pgAdmin 客户端的连接;必要时在 Linux 防火墙放行 5432(PostgreSQL)与 5050(pgAdmin)端口。

二、图形化恢复步骤(pgAdmin 4)

  • 纯 SQL 脚本(.sql)
    1. 在左侧树形导航中右键目标数据库,选择 Restore
    2. 在“Restore”对话框中,选择 Format: Plain,通过文件选择器指定 .sql 文件。
    3. 选择 Role(执行恢复的角色,如 postgres),确认后点击 Restore;右下角会显示进度,完成后刷新数据库查看对象。
  • 自定义/目录格式(.dump/.backup)
    1. 先创建空的目标数据库(建议与备份时同名或明确指定 Owner)。
    2. 右键目标数据库,选择 Restore,在对话框中选择 Format: CustomDirectory,指定 .dump/.backup 文件或目录。
    3. 选择 Role,必要时勾选/调整恢复选项(如是否清理现有对象),点击 Restore 并等待完成。
  • 补充:若备份时仅导出了 Schema(例如只备份了 public),也可在 Schemas → public → Restore 中执行恢复。

三、常见备份格式与恢复方式对照

备份格式 生成工具 在 pgAdmin 的恢复位置 关键选项与提示
.sql(纯文本) pg_dump -F p 目标数据库的 Restore Format: Plain;适合小到中等规模库;导入即执行 SQL 脚本
.dump/.backup(自定义/目录) pg_dump -F c/-F d 目标数据库的 Restore Format: Custom/Directory;支持并行与选择性恢复;大型库更友好
Basebackup(目录) pg_basebackup 不适用(不走 pgAdmin) 需停库或用 recovery.conf/pg_rewind 做物理恢复;适合整库级快速恢复

四、常见问题与排查

  • 权限不足或连接被拒:确认用于恢复的 数据库用户 具备足够权限,且 pg_hba.conf防火墙 已放行 5432/5050
  • 目标库不存在或 Owner 不匹配:先在 pgAdmin 中 创建目标数据库 并指定正确的 Owner,再进行恢复。
  • 恢复对象已存在冲突:在 Custom 格式恢复时可按需选择清理选项,或先清理目标库再恢复。
  • 大文件/长时间无响应:优先使用 Custom/Directory 格式并考虑分批/并行恢复;必要时在 低峰时段 执行。
  • 物理备份无法通过 pgAdmin 恢复:此类备份需采用 文件系统级 的恢复流程(如基础备份 + WAL 回放),请改用命令行工具。

五、命令行恢复备选(当图形界面不适用时)

  • 纯 SQL 脚本(.sql)
    • 示例:
      • psql -h localhost -U postgres -d mydb -f /path/mydb.sql
  • 自定义/目录格式(.dump/.backup)
    • 示例:
      • pg_restore -h localhost -U postgres -d mydb /path/mydb.dump
  • 物理备份(Basebackup)
    • 示例:
      • 停止实例后,将备份目录拷贝至数据目录并配置 recovery.conf/pg_rewind 等,再启动实例完成恢复。
  • 提示:命令行方式适合 自动化/批量/大库 场景,且便于精确控制恢复参数。

0