postgresql物理备份如何进行_postgresqlpgbasebackup操作

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 物理备份的基础手段,合理配置后能有效保障数据安全。