Ubuntu 上备份 pgAdmin 管理的 PostgreSQL 数据库
一 备份方式总览
- 使用 pgAdmin 4 图形界面执行备份,适合临时或一次性操作,支持导出为多种格式。
- 使用 pg_dump/pg_restore 命令行,适合脚本化和自动化,便于纳入 Cron 定时任务与保留策略管理。
- 备份 pgAdmin 4 配置与服务器清单(不是业务数据):配置文件位于用户主目录 ~/.pgadmin4/,可定期打包留存,便于迁移或重装后快速恢复连接信息。
二 使用 pgAdmin 4 图形界面备份
- 连接目标服务器后,在左侧对象树中右键目标数据库 → Backup…。
- 关键选项建议:
- Format:优先选择 Custom(.backup) 便于后续选择性恢复;需要跨平台或便于查看时用 Plain(.sql);超大数据可考虑 Directory(并行)。
- 勾选 Blobs 以包含大对象(如二进制数据)。
- 指定输出目录与文件名,点击 Backup 开始。完成后在界面 Processes 可查看完整执行的 pg_dump 命令与日志,便于排错与沉淀脚本。
三 使用命令行备份与自动化
- 常用命令模板
- 自定义格式(推荐):
pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f /backups/mydb_$(date +%F).dump mydb
- 纯文本 SQL 脚本:
pg_dump -h localhost -p 5432 -U postgres -F p -f /backups/mydb_$(date +%F).sql mydb
- 还原对应:
- 自定义/Tar:pg_restore -h localhost -p 5432 -U postgres -d mydb /backups/mydb_2025-12-16.dump
- 纯文本:createdb -h localhost -p 5432 -U postgres mydb && psql -h localhost -p 5432 -U postgres -d mydb -f /backups/mydb_2025-12-16.sql
- 自动化脚本与定时任务
- 大型库优化
- 使用 Directory 格式(–format=d) 并配合 –jobs=N 并行导出/导入,显著提升速度与恢复效率(pg_restore 同样支持 --jobs)。
四 还原与验证
- 自定义/Tar 备份用 pg_restore;纯文本备份用 psql 执行 SQL 脚本。
- 还原前准备:目标库需存在(pg_restore 可用 –create 创建库),必要时先停止应用以避免写入冲突。
- 定期恢复演练(示例):
- createdb -h localhost -p 5432 -U postgres test_restore
- pg_restore -h localhost -p 5432 -U postgres -d test_restore --verbose /backups/mydb_*.dump
- psql -h localhost -p 5432 -U postgres -d test_restore -c “SELECT COUNT(*) FROM important_table;”
- dropdb -h localhost -p 5432 -U postgres test_restore
- 若备份包含文件系统附件(如某些应用将文件存在数据目录),需另行备份相应目录并在恢复后校验权限与归属。
五 备份策略与运维建议
- 保留策略:按业务重要性设置保留天数(如 7/30 天),脚本中自动清理过期备份。
- 安全与合规:备份文件含敏感数据,建议 加密 并存放于 离线或云存储;限制访问权限,传输使用 SCP/SFTP/TLS。
- 监控与告警:记录 日志 与 备份大小,异常缩小或失败触发 邮件/企业微信/钉钉 告警。
- 时间点恢复(进阶):启用 WAL 归档 与 pg_basebackup,实现 PITR(时间点恢复),与日常逻辑备份互为补充。