pg_basebackup 是什么
pg_basebackup 用来在线获取 PostgreSQL 实例的物理备份,生成一份与数据目录结构一致的基础副本,并自动包含恢复所需的预写日志。它常用于搭建流复制副本,也常作为时间点恢复的起点:拿到基础备份后,配合归档日志即可回放到任意时刻。
基本信息
| 账号要求 | 具备复制权限,且访问控制配置已放行 |
|---|---|
| 日志处理 | 流式模式会自动包含备份所需的日志段 |
| 输出形式 | 目录形式便于校验,打包形式便于分发 |
| 校验工具 | 较新版本提供专门的校验命令检查目录格式备份 |
| 主要用途 | 搭建复制副本、作为时间点恢复的基线 |
在线物理备份
在线物理备份
pg_basebackup -h 127.0.0.1 -U repl -D /backup/pg/base -P -X stream
pg_verifybackup /backup/pg/base # 较新版本可校验目录格式备份
# 需要打包分发时可加 -Ft -z 输出压缩归档,校验前需先解包
# 产物属主应为数据库运行用户关键点对照
| 关键点 | 说明 |
|---|---|
| 复制权限 | 账号需要复制权限,访问控制文件要放行 |
| 日志保留 | 备份期间日志被回收会导致失败,可用复制槽或调大保留量 |
| 输出属主 | 产物属主应为数据库运行用户 |
| 配置补充 | 直接用作数据目录时还需补回配置文件 |
| 跨版本 | 物理备份不跨大版本使用,升级需走逻辑导出 |
使用要点
- 备份前确认复制权限与访问控制配置,权限问题往往报错含糊
- 关注日志回收:备份过程中日志被快速回收会导致任务失败
- 备份产物单独存放并记录时间,避免与已有副本混淆
- 备份完成后校验完整性,用于时间点恢复的基线要确保可用
- 定期用该备份搭建临时实例验证可启动性,而不是只看目录大小
备份产物属主应为数据库运行用户;直接用作数据目录时还需补充配置文件,否则实例无法按预期启动。