pgBackRest
pgBackRest是一款开源的备份还原工具,目标旨在为备份和还原提供可靠易用的备份。
特性
-
支持并行备份和恢复
- pgBackRest 通过并行处理解决了压缩瓶颈,利用多个内核进行压缩
-
支持本地或远程备份恢复操作
- 自定义协议允许 pgBackRest 以最少的配置通过 SSH 在本地或远程备份、恢复和存档数据
-
支持多个存储库
- 多个存储库允许本地存储库具有最少保留时间以实现快速恢复,而远程存储库具有更长保留时间以实现整个企业的冗余和访问。
-
支持全量,增量和差异备份
-
备份轮换和存档到期
- 可以为完整备份和差异备份设置保留策略,以创建任何时间范围的覆盖范围。可以为所有备份或严格为最近的备份维护 WAL 存档。在后一种情况下,使旧备份保持一致所需的 WAL 将保留在存档中。
-
检查备份完整性
- 为备份中的每个文件计算校验和,并在恢复期间重新检查。
-
页校验和
- PostgreSQL 9.3开始支持页面级校验和,如果启用了页面校验和,pgBackRest 将验证备份期间复制的每个文件的校验和
-
Backup Resume
- 可以从停止的点恢复中止的备份。
-
流压缩和校验和
- 压缩和校验和计算在文件被复制到存储库时以流方式执行,无论存储库位于本地还是远程。
-
增量还原
-
并行、异步 WAL 推送和获取
-
表空间和链接支持
-
支持S3、Azure 和 GCS 兼容对象存储
- pgBackRest 存储库可以位于 S3、Azure 和 GCS 兼容的对象存储中,以允许几乎无限的容量和保留。
-
加密
-
与 PostgreSQL >= 8.3 兼容
安装配置
创建目录
mkdir -p /ups/app/postgresql/pgbackrest/{conf,log}
mkdir -p /ups/data/pgdata/repos
chown -R postgres:postgres /ups/app/postgresql/pgbackrest
chown -R postgres:postgres /ups/data/pgdata/repos
chmod -R 750 /ups/data/pgdata/repos
chmod -R 755 /ups/app/postgresql/pgbackrest
解压
tar -xf pgbackrest-release-2.35.tar.gz
编译
cd pgbackrest-release-2.35/src
./configure --prefix=/ups/app/postgresql/pgbackrest/
make -j2
make install -j2
配置环境变量
echo "export PATH=/ups/app/postgresql/pgbackrest/bin:$PATH" >> ~/.bash_profile
. ~/.bash_profile
配置PostgreSQL数据库数据存储目录
cat >/ups/app/postgresql/pgbackrest/conf/pgbackrest.conf <<EOF
[demo]
pgl-path=/ups/data/pgdata/pgbackrest
# 仓库路径加载在pgBackRest配置文件
[global]
repol-path=/ups/data/pgdata/repos
EOF
检查确认数据库已配置归档(可选)
vi $PGDATA/postgresql.auto.conf
archive_mode = 'on'
archive_command = 'pgbackrest --stanza=demo archive-push %p'
log_line_prefix = ''
max_wal_senders = '3'
wal_level = 'replica'
配置归档保留策略
vi /ups/app/postgresql/pgbackrest/conf/pgbackrest.conf
[demo]
pg1-path=/ups/data/pgdata/pgbackrest
pg1-host-config-path=/ups/data/pgdata/pgbackrest
pg1-host-port=22
pg1-host-user=postgres
pg1-host=progs
pg1-port=5432
pg1-user=postgres
[global]
repo1-path=/ups/data/pgdata/repos
repo1-retention-full=2
[global:archive_push]
compress-level=3
创建存储空间并检查配置
# 创建存储空间
pgbackrest --stanza=demo --log-level-console=info stanza-create
# 检查配置
pgbackrest --stanza=demo --log-level-console=info check
使用
语法
Usage:
pgbackrest [options] [command]
Commands:
archive-get Get a WAL segment from the archive.
archive-push Push a WAL segment to the archive.
backup Backup a database cluster.
check Check the configuration.
expire Expire backups that exceed retention.
help Get help.
info Retrieve information about backups.
restore Restore a database cluster.
stanza-create Create the required stanza data.
stanza-delete Delete a stanza.
stanza-upgrade Upgrade a stanza.
start Allow pgBackRest processes to run.
stop Stop pgBackRest processes from running.
version Get version.
Use 'pgbackrest help [command]' for more information.
备份
# 执行全量备份
pgbackrest --stanza=demo --log-level-console=info backup
# --type参数指定备份的类型为增量还是差异备份
## 差异备份
pgbackrest --stanza=demo --log-level-console=info --type=diff backup
## 增量备份
pgbackrest --stanza=demo --log-level-console=info --type=incr backup
查看备份信息
pgbackrest info
恢复
# 模拟数据库损坏
rm -rf $PGDATA/*
pgbackrest --stanza=demo restore --delta --log-level-console=detail
启动数据库检查确认
pg_ctl start -D $PGDATA