备份与恢复
pg_dump、pgBackRest、Barman。
35 分钟
备份、恢复与 PITR
无备份则无 DBA。PG 常用 逻辑备份(pg_dump) 与 物理备份(pg_basebackup + WAL)。与 /roadmaps/postgresql-dba 备份节点对齐。
学习目标
- 用
pg_dump/pg_restore做库级逻辑备份 - 理解 WAL 归档与 PITR 恢复流程
- 制定 RPO/RTO 与演练频率
核心概念
逻辑备份
# 自定义格式,支持并行 restore
pg_dump -U dba -Fc -f codeforge_pg_$(date +%F).dump codeforge_pg
pg_restore -U dba -d codeforge_pg_restored -j 4 codeforge_pg_2026-09-20.dump
单表:pg_dump -t app.cf_track ...;跨版本迁移常用逻辑备份。
物理备份与 WAL
# postgresql.conf
wal_level = replica
archive_mode = on
archive_command = 'cp %p /backup/wal/%f'
pg_basebackup -U replicator -D /backup/base -Fp -Xs -P
PITR:基于 base backup + 归档 WAL 恢复到指定时间点(recovery_target_time)。
策略模板
| 类型 | 频率 | RPO | 用途 |
|---|---|---|---|
| 逻辑全备 | 每日 | 24h | 小库、跨版本 |
| 物理 + WAL | 连续归档 | 分钟级 | 生产 PITR |
| 快照 | 云盘自动 | 取决于云 | 补充手段 |
必须定期 restore 演练,不仅「能备份」。
与 MySQL/Spring Boot 对照
| 项 | PostgreSQL | MySQL 8 |
|---|---|---|
| 逻辑备份 | pg_dump | mysqldump / mydumper |
| 物理备份 | pg_basebackup | xtrabackup / 快照 |
| 增量 | WAL 归档 | binlog |
| PITR | recovery.conf / standby.signal | binlog replay |
Spring Boot 应用无感知;恢复时在 维护窗口 停写或切只读。本站 MySQL 备份习惯(mysqldump)可类比 pg_dump 流程。
练习
- 对练习库做
pg_dump -Fc,恢复到新库并校验行数 - 写一份 RPO/RTO 假设(业务可接受丢 15 分钟数据吗?)