pgbackrest 实践

Pgbackrest是一款针对PostgreSQL的备份工具,支持S3兼容存储、多种压缩算法、异步并行处理,确保数据的完整性和安全性。文章详细介绍了在单机、远程和云端环境下的配置和使用,包括全量、增量和差异备份,以及备份策略、还原操作。此外,还解决了常见问题,如从备机备份、处理WAL段错误等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:王志斌,曾获得中国PostgreSQL数据库管理工程师(PGCE),是PostgreSQL官方认证讲师,盘古云课堂特邀金牌讲师。

Pgbackrest作为PostgreSQL数据库的备份和还原工具,在软件设计上综合考虑了功能和性能,包括完整性、一致性、安全性、数据压缩、异步并行等方面,其主要技术特性主要包括如下内容,如图所示:

图1 pgbackrest主要技术特性

  • S3兼容

支持备份存储S3和Azure兼容对象存储上,如对象存储Minio。

  • 压缩技术

支持gzip, bzip, lz4, zstd的压缩算法,并提供不同压缩等级。

  • 异步、并行

在异步模式下通过并行推送和获取以加快处理速度,提高备份与还原处理效率。

  • 校验和

采用checksum 算法,验证备份期间复制的每个文件的校验和。在完全备份期间,将验证所有页面的校验和,而在差异备份和增量式备份期间,将验证已更改文件的校验和。

  • 加密

通过定义加密类型及密码,来保证备份数据的存储安全性。

在技术特性基础上,pgbackrest实现了备份、还原、保留策略、云端备份等相关功能,如图所示:

图2 pgbackrest功能特性

功能列表

  • 备份方式

全量备份:将数据库集群的全部内容复制到备份中。数据库集群的第一个备份始终是全量备份。始终能够直接还原全量备份。全量备份不依赖于完整备份之外的任何文件来保持一致性。

增量备份:仅复制自上次全量备份以来已更改的那些数据库集群文件。通过复制所选差异备份中的所有文件以及先前全量备份中的相应未更改文件来还原差异备份。差异备份的优点在于,与全量备份相比,它需要的磁盘空间更少,但是,差异备份和全量备份都必须有效才能还原差异备份。

差异备份:仅复制自上次备份(可以是另一个增量备份,差异备份或全量备份)以来发生更改的那些数据库集群文件。由于增量备份仅包括自上次备份以来已更改的文件,因此它们通常比全量备份或差异备份小得多。与差异备份一样,增量备份依赖于其他备份才能有效还原增量备份。由于增量备份仅包括自上次备份以来的那些文件,因此,所有先前的增量备份(回到先前的差异备份),先前的差异备份和先前的全量备份都必须有效,才能执行增量备份的还原。如果不存在差异备份,则所有先前的所有增量备份都将还原为必须存在的先前的完整备份,并且完整备份本身必须有效才能还原增量备份。

  • 保留策略

支持保留的备份数量,可以指定全量、差异备份的具体数量。

  • 还原方式

支持全量、增量、差异还原以及时间点还原,还同时支持还原指定数据库、表空间和链接支持等。

  • 异步归档

支持异步的推送和获取,利用pgbackrest并发特性,提升备份和还原的性能,同时在处理过程中对重新数据进行校验和处理,保证备份和还原数据正确性。

  • 检查

检查命令验证pgBackRest和archive_command设置是否已正确配置以进行归档和备份。

  • 监控

支持通过SQL查询方式,在PostgreSQL中创建函数查询检查信息,也可以通过Jq从Json中提取数据来进行查询。

  • 加密

基于用户提供的密码及加密类型对存储库进行加密,防止未经授权访问存储库中的数据。

  • 压缩

根据用户设定的压缩算法及压缩等级,将压缩后的数据存储到存储库中。

注:pgbackrest目前支持Postgresql 8.3以上版本

使用场景

Pgbackrest作为一款优秀的备份和还原工具,与PostgreSQL自带的pg_basebackup相比功能更加强大,尤其是体现在与应用场景的结合使用,下面主要从单机、远程、云端三个场景进行操作介绍:

操作环境系统版本:Centos 7
Pgbackrest版本:v2.24
PostgreSQL版本:12.2

单机使用

主机和备份存储在同一台物理主机上,为了确保备份数据的安全性,一般不推荐生成环境使用。

安装配置

首选需要进行源码下载和编译,然后配置pgbackrest的相关目录,并修改对应权限。

下载源码文件。

wget https://github.com/pgbackrest/pgbackrest/archive/release/2.26.tar.gz

安装编译相关依赖环境。

sudo yum install -y libxml2 libxml2-devel openssl openssl-devel

进行源码编译。

cd src/
./configure && make

拷贝执行程序到/usr/bin目录。

sudo cp pgbackrest /usr/bin

修改权限。

sudo chmod 755 /usr/bin/pgbackrest

创建配置日志目录。

sudo mkdir -p -m 770 /var/log/pgbackrest

修改访问权限

sudo chown pgbackrest:pgbackrest /var/log/pgbackrest

创建配置目录。

sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d

创建配置文件。

sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf

修改访问权限。

sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf

创建仓库路径。

sudo mkdir -p /var/lib/pgbackrest
sudo chmod 750 /var/lib/pgbackrest
sudo chown pgbackrest:pgbackrest /var/lib/pgbackrest

操作上述命令后,pgbackrest的配置基本完成,下面将进行配置节的操作。

服务器上配置节

在服务器上配置Pgbackrest节的相关内容,并修改Pgbackrest的配置文件。最后通过check命令来进行节的检查。

生成备份所需的密码。

openssl rand -base64 48
Dpy3iBVyfoAsDH+OQyApvpNT5ijs3jPI3fuVgTRKKbckN9HZe74ObGtsdkrhaa7T

修改配置文件。

vim /etc/pgbackrest/pgbackrest.conf

配置仓库路径。

[postgres]
pg1-path=/home/postgres/pg/data/
[global]
repo1-path=/var/lib/pgbackrest
repo1-retention-full=2
repo1-cipher-pass=Dpy3iBVyfoAsDH+OQyApvpNT5ijs3jPI3fuVgTRKKbckN9HZe74ObGtsdkrhaa7T
repo1-cipher-type=aes-256-cbc
process-max
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值