PostgreSQL物理备份通过pg_basebackup实现,该工具利用复制协议创建一致性快照,支持全量备份、WAL归档与流复制备库搭建;使用前需配置wal_level、max_wal_senders及pg_hba.conf,创建REPLICATION权限用户;备份命令如pg_basebackup -h -U -D -Ft -z -P -R可生成压缩tar包并自动生成备库启动文件;恢复时需停止服务、清空数据目录、解压备份并正确配置恢复参数;结合WAL归档可实现时间点恢复,建议定期测试恢复流程、监控磁盘空间,并在低峰期执行备份以保障数据安全。

PostgreSQL 的物理备份主要通过 pg_basebackup 工具完成,它是官方提供的用于创建数据库集群基础备份的工具。该方式属于物理级别的一致性快照备份,适用于主从搭建、灾难恢复等场景。
一、pg_basebackup 简介
pg_basebackup 是 PostgreSQL 自带的逻辑流复制客户端工具,它连接到运行中的 PostgreSQL 实例,利用复制协议获取数据库文件的二进制副本,同时保证数据一致性(不需要停机)。
特点包括:
- 支持全量物理备份
- 可配合 WAL 归档实现时间点恢复(PITR)
- 可用于搭建流复制备库
- 备份过程不影响数据库正常运行
二、使用 pg_basebackup 前的准备
要成功执行物理备份,需提前配置以下内容:
1. 配置 postgresql.conf
- wal_level = replica 或 higher(如 logical)
- max_wal_senders:设置足够数量,建议 ≥2
- archive_mode(可选但推荐):开启归档更利于恢复
2. 配置 pg_hba.conf
添加一条允许复制连接的规则:
host replication backup_user 192.168.1.0/24 md5
示例中 backup_user 是专门用于备份的用户,需具有 REPLICATION 权限。
3. 创建专用备份用户(推荐)
登录数据库执行:
CREATE USER backup_user WITH REPLICATION ENCRYPTED PASSWORD 'your_password';
三、执行 pg_basebackup 备份操作
基本语法格式如下:
pg_basebackup [选项]
常用命令示例:
将数据库备份到本地目录 /data/backup/base_20250405:
pg_basebackup -h 127.0.0.1 -p 5432 -U backup_user -D /data/backup/base_20250405 -Ft -z -P
参数说明:
- -h:主机地址
- -p:端口
- -U:连接用户(需有复制权限)
- -D:目标目录或压缩包路径
- -Ft:输出为 tar 格式(默认是 plain 目录结构)
- -z:启用 gzip 压缩(仅对 tar 有效)
- -Z:指定压缩级别(1-9)
- -P:显示进度信息
- -R:在备份完成后自动生成 standby.signal 文件和 postgresql.auto.conf,便于直接作为备库启动
- --checkpoint=fast|spread:控制检查点行为,默认 spread 更温和
保存为压缩 tar 包示例:
pg_basebackup -h localhost -U backup_user -D /backup/base.tar.gz -Ft -z -P -R
此命令生成一个压缩的完整备份包,适合远程传输或长期归档。
四、恢复与使用备份
物理备份不能像逻辑导出那样选择性恢复表,必须整体还原整个实例。
恢复步骤:
- 停止当前数据库服务
- 清空数据目录($PGDATA)
- 解压备份文件到 $PGDATA(如果是 tar 格式)
- 若开启了归档,确保 recovery.conf 或相关恢复设置正确(PostgreSQL 12+ 使用 postgresql.auto.conf 和 standby.signal)
- 启动数据库实例
示例(tar 格式恢复):
rm -rf /var/lib/postgresql/15/main/* tar -zxvf base.tar.gz -C /var/lib/postgresql/15/main # 如果包含 standby.signal,则自动以备库模式启动 pg_ctl start -D /var/lib/postgresql/15/main
五、注意事项与最佳实践
- 定期测试备份恢复流程,确保有效性
- 结合 WAL 归档(archive_command)才能实现 PITR
- 备份期间网络中断会导致失败,建议在低峰期执行
- 避免频繁全量备份,可配合增量策略(如基于 LSN 的差异备份工具 pg_probackup)
- 监控磁盘空间,尤其是 WAL 日志增长情况
基本上就这些。pg_basebackup 操作简单且稳定,是 PostgreSQL 物理备份的基础手段,合理配置后能有效保障数据安全。










