作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万+ 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复, 安装迁移,性能优化、故障应急处理 微信:jem_db QQ交流群:587159446 公众号:IT邦德
文章目录
前言
本文详细阐述了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为开源备份工具,生产环境使用非常方便
