0

0

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

冰川箭仙

冰川箭仙

发布时间:2025-11-26 19:35:08

|

767人浏览过

|

来源于php中文网

原创

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物理备份如何进行_postgresqlpgbasebackup操作

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 备份操作

基本语法格式如下:

妙话AI
妙话AI

免费生成在抖音、小红书、朋友圈能火的图片

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

相关专题

更多
postgresql常用命令
postgresql常用命令

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、l、c、dt、d table_name、du、i file_name、e和q等。本专题为大家提供postgresql相关的文章、下载、课程内容,供大家免费下载体验。

158

2023.10.10

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

967

2023.11.02

postgresql常用命令有哪些
postgresql常用命令有哪些

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、l、c、dt、d table_name、du、i file_name、e和q等。更详细的postgresql常用命令,大家可以访问下面的文章。

194

2023.11.16

postgresql常用命令介绍
postgresql常用命令介绍

postgresql常用命令有l、d、d5、di、ds、dv、df、dn、db、dg、dp、c、pset、show search_path、ALTER TABLE、INSERT INTO、UPDATE、DELETE FROM、SELECT等。想了解更多postgresql的相关内容,可以阅读本专题下面的文章。

267

2023.11.20

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

343

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2072

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

346

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

253

2023.09.05

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

80

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 8.4万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.4万人学习

Vue 教程
Vue 教程

共42课时 | 6.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号