作者:IT邦德,Oracle、PostgreSQL ACE
中国DBA联盟(ACDU)成员,10余年DBA工作经验
擅长主流数据Oracle、MySQL、PG、openGauss运维
备份恢复,安装迁移,性能优化、故障应急处理等
•••
@TOC
前言
本文详细阐述了pgbackrest备份的详细过程以及注意要点。
1.pgbackrest介绍
pgBackRest是PostgreSQL的可靠备份和恢复解决方案,
可以无缝扩展到最大的数据库和工作负载,
用于完整备份。它非常适合大小为TB级的postgres数据库。
与pg_basebackup和pg_rman相比,具有以下优势:
1、提供增量备份,增量备份一定程度上可以节省磁盘空间的使用并减少备份耗时
2、可以通过全量备份+增量备份进行增量恢复
3、无需通过实际的数据恢复操作即可验证备份文件是否有效
4、提供备份压缩以节省磁盘空间
5、可以对远程实例进行备份【远程备份要实现SSH互信】
6、可以从STANDBY实例进行备份
7、可以查看已备份数据备份以及归档的列表以及相关详细信息
8、支持部分还原(还原部分数据库)
9、支持对备份集的管理
10、并行恢复
2.源码安装
2.1 依赖安装
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo \
http://mirrors.aliyun.com/repo/Centos-7.repo
yum install make gcc postgresql12-devel openssl-devel \
libxml2-devel lz4-devel libzstd-devel bzip2-devel \
libyaml-devel libssh2-devel
2.2 编译安装
1.解压安装包到/opt下
wget -q -O - \
https://github.com/pgbackrest/pgbackrest/archive/release/2.52.tar.gz | \
tar zx -C /opt
2.配置和编译pgBackRest
cd /opt/pgbackrest-release-2.52/src && ./configure && make
3.将创建一个名为pg primary的新主机,以包含演示集群并运行pgBackRest示例
--安装依赖
yum install postgresql-libs libssh2
--从生成主机复制pgBackRest二进制文件
scp /opt/pgbackrest-release-2.52/src/pgbackrest /usr/bin
chmod 755 /usr/bin/pgbackrest
2.进入到pgbackrest目录
4.安装pgbackrest
make -j4 && make install -j4
2.3 创建目录
mkdir -p -m 770 /var/log/pgbackrest
chown postgres:postgres /var/log/pgbackrest
mkdir -p /etc/pgbackrest
mkdir -p /etc/pgbackrest/conf.d
touch /etc/pgbackrest/pgbackrest.conf
chmod 640 /etc/pgbackrest/pgbackrest.conf
chown postgres:postgres /etc/pgbackrest/pgbackrest.conf
3.设置环境变量
vi /etc/profile.d/pgbackrest.sh
export PGBACKREST_HOME=/usr/bin/pgbackrest
export PATH=$PGBACKREST_HOME/bin:$PATH
--环境变量生效
source /etc/profile.d/pgbackrest.sh
4.确认安装
[root@centos79 ~]# sudo -u postgres pgbackrest
pgBackRest 2.52 - General help
Usage:
pgbackrest [options] [command]
Commands:
annotate Add or modify backup annotation.
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.
repo-get Get a file from a repository.
repo-ls List files in a repository.
restore Restore a database cluster.
server pgBackRest server.
server-ping Ping pgBackRest server.
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.
verify Verify contents of the repository.
version Get version.
Use 'pgbackrest help [command]' for more information.
5.参数配置
5.1 配置pgbackrest参数
--创建repository
mkdir -p /var/lib/pgbackrest
chmod 750 /var/lib/pgbackrest
chown postgres:postgres /var/lib/pgbackrest
--创建Encryption
[root@centos79 ~]# openssl rand -base64 48
vA6DTEeRNhgB80CkQY23m1hFhvWc7uyBMndxppklVkzLGXyD/eKObDsDkoXzaClV
vi /etc/pgbackrest/pgbackrest.conf
[global]
log-level-file=detail
log-path=/var/log/pgbackrest/
repol-path=/var/lib/pgbackrest
repo1-retention-full=2
repo1-cipher-type=aes-256-cbc
repo1-cipher-pass=vA6DTEeRNhgB80CkQY23m1hFhvWc7uyBMndxppklVkzLGXyD/eKObDsDkoXzaClV
[demo]
pg1-path=/pgccc/pgdata
pg1-host-config-path=/etc/pgbackrest
pg1-host=192.168.3.10
pg1-port=5432
pg1-user=postgres
pg1-host-user=postgres
[global:archive_push]
compress-level=3
密码文件登记
vi ~/.pgpass
localhost:5555:postgres:postgres:123456
localhost:*:*:postgres:123456
127.0.0.1:*:*:postgres:123456
chmod 0600 ~/.pgpass
5.2 配置postgres参数
vi postgresql.auto.conf
archive_command = 'pgbackrest --stanza=demo archive-push %p'
archive_mode = on
log_filename = 'postgresql.log'
max_wal_senders = 3
wal_level = replica
6.初始化备份
1.记得重启让以上修改的参数生效,确保PG数据库启动并连接
sudo -u postgres pgbackrest --stanza=demo \
--log-level-console=info stanza-create
7.备份校验
sudo -u postgres pgbackrest --stanza=demo \
--log-level-console=info check
8.备份与还原
8.1 全量备份
pgbackrest --stanza=demo --log-level-console=info --type=full \
--start-fast backup --process-max=16 >demo_full_` date +%F_%T `.log &
log-level-console - 日志部分定义了与日志记录相关的设置
off - 完全不记录(不推荐)
error - 仅记录错误
warn - 记录警告和错误
info - 记录信息、警告和错误
detail - 记录详细信息、信息、警告和错误
debug - 记录调试、详细信息、信息、警告和错误
trace - 记录跟踪(非常详细的调试)、调试、信息、警告和错误
process-max - 每个进程都会执行压缩和传输以使命令运行得更快,配置CPU核心数的一般。
type - 全备份full、增量备份incr、差异备份diff
compress - compress-level=0 关闭压缩备份,默认开启。
start-fast - 强制在快速备份的时候使用检查点。否则,备份将在下一个常规检查点之后启动。
8.2 增量备份
pgbackrest --stanza=demo --log-level-console=info --type=incr \
backup --process-max=16 >demo_incr_` date +%F_%T `.log &
8.3 全量还原
需要先进行数据库停机
[postgres@pgpcp ~]$pg_ctl stop
删除数据库数据目录所有文件
[postgres@pgpcp ~]$rm -rf /pgccc/pgdatata
pgbackrest --stanza=demo \
--log-level-console=info restore \
--pg1-path=/pgccc/pgdata \
--process-max=16 > demo_restore_` date +%F_%T `.log &
9.总结
pgbackrest为开源备份工具,生产环境使用非常方便