Linux下使用 pgAdmin 的备份与恢复策略
一 策略总览与选型
- 备份类型与适用场景
- 逻辑备份:使用 pg_dump,导出为 SQL 或 自定义格式(-F c),便于跨版本迁移、按对象/库粒度恢复、选择性恢复。
- 物理备份:使用 pg_basebackup,获取数据目录一致性副本,适合快速整机恢复、配合 WAL 实现时间点恢复(PITR)。
- 备份范围
- 业务数据:优先覆盖关键业务库;超大库建议按库/按模式拆分备份任务。
- 全局对象:如角色、表空间、参数等,使用 pg_dumpall --globals-only 单独备份。
- 管理面配置:如 pgAdmin 4 的配置与元数据(/etc/pgadmin、~/.pgadmin),与主库备份分离保存。
- 频率与保留
- 日备 + 周备 + 月备的分层保留;关键库缩短保留窗口并增加副本数。
- 存储与异地
- 备份落盘到独立磁盘/存储,并同步至 云端/异地,避免单点故障。
- 验证与演练
- 定期做恢复演练与校验(如校验和、抽样查询),确保备份可用。
二 备份实施步骤
- 使用 pgAdmin 图形界面
- 连接目标服务器 → 左侧选择数据库 → 右键 备份… → 选择输出路径与文件名 → 选择格式(如 纯 SQL 或 自定义 tar)→ 开始备份。也可通过“任务 → 备份”进入。
- 使用命令行(便于自动化与脚本化)
- 逻辑备份(SQL 便于审查与跨平台迁移)
- pg_dump -h localhost -U postgres -d mydb -f /pgbackup/mydb_$(date +%F).sql
- 逻辑备份(自定义格式,便于选择性恢复与压缩)
- pg_dump -h localhost -U postgres -F c -b -v -f /pgbackup/mydb_$(date +%F).dump mydb
- 物理备份(一致性全量,适合配合 WAL 做 PITR)
- pg_basebackup -h localhost -U postgres -D /pgbackup/base_$(date +%F) -P -X stream -R
- 自动化与保留
- 将备份命令写入脚本,使用 cron 定时执行,并配合 logrotate 或自定义脚本做保留清理(如保留最近 7/30/90 天)。
三 恢复实施步骤
- 使用 pgAdmin 图形界面
- 连接到服务器 → 选择目标库(或新建空库)→ 右键 恢复… → 选择备份文件 → 配置恢复选项(如仅数据/仅结构、目标库名)→ 开始恢复。
- 使用命令行
- SQL 格式备份恢复
- psql -h localhost -U postgres -d mydb -f /pgbackup/mydb_2025-09-01.sql
- 自定义格式备份恢复(可按表/模式选择性恢复)
- pg_restore -h localhost -U postgres -d mydb -v /pgbackup/mydb_2025-09-01.dump
- 物理备份恢复
- 停止数据库 → 清理/替换 $PGDATA 为备份目录 → 配置 recovery.conf(或等效的 postgresql.auto.conf 恢复指令,如 restore_command)→ 启动数据库进入恢复 → 达到目标时点后执行 pg_wal_replay_resume() 完成恢复。
- 时间点恢复要点
- 需提前开启 WAL 归档(archive_mode=on,archive_command),备份完成后保留 WAL,恢复时通过 restore_command 回放至指定时间点。
四 关键配置与运维要点
- WAL 归档与 PITR
- 在 postgresql.conf 启用归档与命令(示例:archive_mode=on;archive_command=‘test ! -f /archive/%f && cp %p /archive/%f’),确保备份后 WAL 持续归档,恢复时提供连续回放能力。
- 角色与全局对象
- 使用 pg_dumpall --globals-only 定期备份角色、表空间、配置参数,恢复时先于业务库导入,避免权限/对象缺失。
- 配置文件与元数据备份
- 定期备份 pgAdmin 4 配置与元数据目录(示例:/etc/pgadmin、~/.pgadmin),便于管理平台级恢复与迁移。
- 安全与合规
- 备份文件设置最小权限(如 600),传输与存储加密;云端备份启用版本与校验;对敏感数据考虑脱敏或加密备份。
五 推荐实践清单
- 关键库采用“日备(自定义格式)+ 周备(SQL)+ 月备(物理/归档)”的分层策略,并保留至 7/30/90 天。
- 所有备份任务都应有“校验与恢复演练”,例如每周抽样恢复并在演练库执行关键查询验证。
- 为 pgAdmin 单独做配置与元数据备份,并与数据库备份分开放置与保留。
- 生产变更前先做全量备份;恢复安排在低峰时段,并全程监控与记录。