PG-使用pgBackRest备份恢复工具实验

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
原文地址:https://www.cnblogs.com/binliubiao/p/15291227.html