为什么 PostgreSQL 备份与恢复至关重要?

PostgreSQL 是一款流行的开源对象关系型数据库管理系统 (RDBMS)。对于任何以 PostgreSQL 驱动的企业来说,稳健的 PostgreSQL 备份策略对于保护数据免受人为错误、系统故障、勒索软件攻击以及确保合规性都是必不可少的。

  • 人为错误:”意外删除”。一条编写不当的 DROP TABLE 或不带 WHERE 条件的 DELETE 命令,可能在毫秒内抹去数年的数据。
  • 硬件与系统故障:即使是最优质的 SSD 也可能故障,云区域也可能离线。如果没有存储在独立位置的备份,您的数据将随硬件一同消亡。
  • 勒索软件与网络攻击:数据库是黑客的主要目标。如果您的数据被恶意攻击者加密,异地备份通常是您无需支付赎金即可恢复的唯一途径。
  • 合规要求:GDPR、HIPAA 和 SOC2 等法规通常要求您维护可验证的数据保留和恢复流程。

在本指南中,我们将通过 6 种方法为您介绍备份和恢复 PostgreSQL 数据库的最可靠方式:命令行、pgAdmin 4 图形界面、快速转储、Cron 任务和 i2Backup(企业级备份解决方案)。

方法 1. 使用命令行备份 PostgreSQL

命令行界面 (CLI) 是管理 PostgreSQL 备份的常用方式。它使用两个原生工具:用于创建备份的 pg_dump 和用于恢复数据的 psqlpg_restore。此方法支持备份特定表,并可放入脚本中进行调度。但它不支持时间点恢复。

详细步骤如下:

步骤 1. 导航到 PostgreSQL bin 文件夹。通常位于:C:\Program Files\PostgreSQL\16\。

步骤 2. 找到 “bin” 文件夹,右键单击它,选择 “Open in Terminal“。

步骤 3. 要创建单个数据库的标准备份,请使用以下结构:

pg_dump -U [username] -W -F t [database] > c:\[backup location]

pgdump 备份 postgresql


步骤 4. 系统将提示您输入密码。输入密码并按 “Enter“。备份完成后,前往备份位置检查备份文件。

注意

1. 如果要备份所有 PostgreSQL,请使用 ./pg_dumpall。如果只想备份 schema,请使用 ./pg_dumpall

2. 如果您使用 Docker,要在 Docker 中备份 PostgreSQL 数据库:

  • 使用 docker ps 查找您的容器名称
  • 运行 dump 命令通过 Docker 备份 PostgreSQL:docker exec -t container_name pg_dump -U username db_name > backup.sql
  • 确保 backup.sql 文件出现在您的本地文件夹中。

3. 如果要备份 PostgreSQL 到 AWS S3,请配置 AWS CLI:

  • 运行 aws configure 输入您的 Access Key ID 和 Secret Access Key。
  • 指定您的 AWS 区域,并将默认输出格式设置为 json
  • 确保您的 IAM 用户具有 S3:PutObject 权限。
  • 然后将 AWS 设置为备份目标位置。

    要恢复 PostgreSQL,您可以使用以下脚本。

    1. 恢复纯文本 (.sql) 文件:

    psql -U [username] -d [target_database] < [backup_file].sql

    2. 恢复自定义/压缩 (.dump) 文件:

    如果使用了 -Fc 标志则需要此方法。

    pg_restore -U [username] -d [target_database] [backup_file].dump

    方法 2. 使用 pgAdmin 4 (GUI) 备份 PostgreSQL 数据库

    pgAdmin 4 提供了管理备份的强大图形化方式。此方法非常适合一次性备份、初学者或希望直观选择特定数据库对象的开发人员。但 pgAdmin 较难自动化;对于非常大的数据库速度较慢。

    请按照以下步骤操作:

    步骤 1. 打开 pgAdmin,展开 “Servers” 树,找到您要备份的数据库。

    步骤 2. 右键单击数据库名称,从上下文菜单中选择 “Backup…“。

    步骤 3. 然后配置设置:

    • Filename:单击文件夹图标选择存储路径并为文件命名(例如 my_db_backup.dump)。
    • Format:选择 Custom(推荐,以获得更好的压缩和灵活的恢复)或 Plain(可读的 SQL 脚本)。

    步骤 4. 在 Options 选项卡中,如果不需要完整备份,可以选择 “Only Data” 或 “Only Schema“。

    步骤 5. 单击 Backup 执行。您可以在右下角的 “Processes” 仪表板中监控进度。

    使用 pgadmin4 备份 postgresql

    要从 pgAdmin4 恢复数据库,请按照以下步骤操作:

    步骤 1. 创建一个新的空目标数据库

    步骤 2. 右键单击目标数据库并选择 “Restore…“。

    步骤 3. 选择文件:

    • Format: 选择与备份匹配的格式(例如 Custom 或 Tar)。
    • Filename: 浏览找到您的 .dump 或 .sql 文件。

    步骤 4. 在 Options 选项卡下,如果您想在重新创建之前删除现有对象,启用 “Clean before restore” 会很有用。

    步骤 5. 单击 “Restore“。完成后会显示通知。

    提示:如果您在 pgAdmin 中选择 Plain 格式,它会生成一个标准 SQL 文件。要恢复它,您应该使用查询工具运行脚本或使用 psql 命令行,因为 pgAdmin 中的 “Restore” 对话框主要是为 Custom 和 Tar 格式设计的。

    方法 4. 使用 DBeaver 进行快速转储

    DBeaver 深受开发人员喜爱,因为它是一个通用工具,几乎可以与任何数据库引擎配合使用。虽然它提供了流畅的 “Quick Dumps” 界面,但它依赖您本地的 PostgreSQL 安装来执行实际操作。

    DBeaver 具有直观的 UI,适用于快速数据导出,但由于是基于 Java 构建的,不太适合调度保护且资源占用较高。

    以下是使用 DBeaver 的步骤。

    准备在备份之前,DBeaver 需要知道您的 PostgreSQL 工具(pg_dump)在您计算机上的位置。
    在数据库导航器中右键单击您的连接,选择 Edit Connection。
    转到 Connection Settings > Local Client。
    单击 Browse 并将其指向您的 PostgreSQL 安装的 bin 文件夹(例如,Windows 上为 C:\Program Files\PostgreSQL\15\bin,Linux 上为 /usr/bin)。
    如果您没有在本地安装 Postgres,DBeaver 可能会提供为您下载本地客户端二进制文件。

      准备完成后,请按照以下步骤操作。

      步骤 1. 右键单击您的数据库名称,导航到 “Tools“,然后选择 “Backup“。

      步骤 2. 选择要包含的特定 schema 或表。

      步骤 3. 选择格式——Plain 或 Custom

      • Plain: 最适合可读的 SQL 脚本。
      • Custom: 最适合压缩的专业级备份。

      步骤 4. 选择目标位置(本地磁盘或外部驱动器),然后单击 “Start“。

      使用 dbeaver 备份 postgresql

      方法 5. 自动备份 PostgreSQL (Cron Jobs)

      手动备份适合一次性任务,但生产数据库需要自动化。在 Linux 和 macOS 上,调度备份最可靠的方式是使用 Cron Jobs。但如果您不熟悉 Cron Jobs,操作起来可能比较困难。

      第 1 部分. 处理密码

      Cron 任务在后台运行,因此它们无法在被提示时 “输入” 密码。您有两个专业选项来处理此问题:

      • 选项 A (.pgpass 文件): 在主目录中创建一个名为 .pgpass 的文件,格式为 hostname:port:database:username:password。将权限设置为 600 (chmod 600 ~/.pgpass),以便只有您可以读取它。
      • 选项 B (环境变量): 直接在备份脚本中定义 PGPASSWORD(适用于简单设置)。

      第 2 部分. 脚本和调度

      与其将长命令直接放在 crontab 中,不如创建一个简单的 bash 脚本 (backup_db.sh)。这允许您添加日期戳和自动清理等功能。

      #!/bin/bash
      # 配置
      DB_NAME="my_database"
      BACKUP_DIR="/home/user/backups"
      DATE=$(date +%Y-%m-%d_%H-%M)

      # 创建备份(压缩)
      export PGPASSWORD='your_secure_password'
      pg_dump -U postgres -d $DB_NAME | gzip > $BACKUP_DIR/db_backup_$DATE.sql.gz

      # 可选:删除 30 天前的旧备份以节省空间
      find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +30 -delete
      重要:保存脚本后,通过运行以下命令使其可执行:chmod +x backup_db.sh。

      第 3 部分. 调度 Cron Job

      Crontab 是您告诉系统何时运行脚本的调度表。

      步骤 1. 打开编辑器:crontab -e

      步骤 2. 在底部添加一行以调度备份。例如,要每天晚上 2:00 运行:

      00 02 * * * /home/user/scripts/backup_db.sh >> /home/user/logs/backup.log 2>&1

      Cron 调度说明

      • 00 02:在 2 点的第 0 分钟运行(凌晨 2:00)。
      • * * *:每个月的每一天、每个月、每周的每一天。
      • >> … 2>&1:捕获任何错误并将其保存到日志文件中——对故障排查至关重要!

      方法 6. i2Backup:企业级自动化与易用性

      虽然手动脚本和开源 GUI 对于小型项目有效,但拥有海量数据集和严格正常运行时间要求的企业环境通常需要更强大、”无人值守” 的解决方案。

      对于无法承受数据丢失或手动配置错误风险的组织,英方软件的 i2Backup 提供了一种专业且简单的方式,为所有关键的 PostgreSQL 数据库创建调度备份。它支持多种备份存储,如本地/外部磁盘、ZFS、NAS、重复数据删除存储、AWS S3 存储等。

      i2Backup for PostgreSQL 的关键功能和优势

      • 集中管理:从单个仪表板管理跨物理服务器、虚拟机和云环境的数百个 PostgreSQL 实例的备份。
      • 自动化工作流:通过智能调度消除人为错误。该解决方案根据您的日程自动执行备份。
      • 增量备份:i2Backup 仅捕获已变更的数据,而不是每次转储整个数据库(这会消耗大量带宽和存储)。这缩短了备份窗口并显著降低了存储成本。
      • 重复数据删除:配置备份保留规则,可自动删除过期的备份版本以优化存储。
      • 可扩展备份:随您的基础设施扩展而构建。无论您管理的是单个本地实例还是数千个 PostgreSQL 节点,i2Backup 都提供集中控制台进行统一管理。
      • 时间点恢复 (PITR):轻松将数据库回滚到损坏事件或意外删除发生前的精确时间点。

      对比:i2Backup vs. 手动方法

      功能 手动脚本 (Cron/CLI) i2Backup (企业级)
      设置 每台服务器需大量手动工作 快速、基于策略的部署
      数据传输 通常仅完整转储 支持真正的增量备份
      监控 手动检查日志 自动化告警和报告
      可扩展性 大规模管理困难 可扩展备份节点,支持增长

      如何使用 i2Backup 备份 PostgreSQL 数据库:

      步骤 1. 申请 i2Backup 免费试用,英方软件的工程师将帮助您在环境中安装和部署 i2Backup。

      步骤 2. 在仪表板上,单击 “Backup & Restore” > “App Protect” > “Backup Rule“。然后单击 “New” 按钮。

      i2backup 新建任务

      步骤 3. 在基本参数窗格中,输入 名称,选择 “PostgreSQL” 作为规则类型。然后根据需要填写其他参数。单击 “Next“。

      i2backup 备份 postgresql 基本参数

      • Name:为任务命名。可包含字母、数字和特殊字符。
      • Rule Type:选择 “PostgreSQL”
      • Timeout Threshold:如果备份在时间阈值外未完成,则生成告警。超时阈值可设置在 0 到 168 小时之间。0 表示关闭告警设置。
      • Priority:所选任务执行的优先级。
      • Disable Rule:如果有时需要暂停备份,可以启用 “Disable Rule”。

      步骤 4. 在此步骤中,选择 “Backup Client“,然后选择一个存储作为 “Backup Target“。单击 “Next“。

      选择备份客户端和目标

      步骤 5. 在 “Backup content & Parameters” 窗口中选择一个实例。在 “Backup Schedule” 窗口中,可以设置 “备份计划”,包括备份类型和保留规则。

      i2backup 备份 postgresql 备份计划

      步骤 6. 如果需要,在 “Advanced” 中配置压缩和加密规则。然后 “确认并提交” 备份任务。

      高级备份 postgresql

      结论

      选择正确的方法来备份 PostgreSQL 数据库完全取决于您的环境和数据的价值。对于开发人员和小型项目,原生命令行工具和 pgAdmin 等 GUI 提供了一种可靠、免费的方式来管理手动快照和简单的自动化。这些方法提供了本地开发和小型生产任务所需的灵活性,且无需额外成本。

      然而,随着数据规模的增长,手动脚本通常会因 “不可见” 故障和高存储需求而成为隐患。对于关键任务环境,像英方软件的 i2Backup 这样的企业级解决方案是最有效的选择,提供手动方法无法比拟的自动化、增量和可扩展保护。除了备份 PostgreSQL,它还支持备份许多其他平台,如 SQL Server 数据备份

      博客分类底部

      准备好构建企业数据韧性了吗?

      立即开启 60 天免费试用,或预约产品演示,了解英方软件如何为您的核心业务提供「零中断、零丢失」的数据保护。

      请先完成图形验证

      验  证  码:

      英方官网验证码
      第三方二维码 第三方二维码
      英方公告铃铛图标
      英方公告铃铛图标

      公告

      英方侧边栏向右箭头
      英方高亮提示圆点
      英方软件公告
      各位求职者、合作伙伴:
      近期有第三方冒用英方名义发布虚假招聘、不实业务信息。我司正规招聘全程零收费,非官网渠道信息均不作数。
      信息核验热线:400-0078-655
      遇诈骗请保留证据,及时联系我们并报警
      英方软件
      2026 年 6 月 23 日
      英方邮件咨询图标
      英方邮件咨询图标

      邮件

      英方销售支持图标
      英方销售支持图标

      销售

      英方侧边栏向右箭头
      联系销售:400-0078-655 转 1