学会pgbackrest备份,再也不怕删库!

在以往的文章中,小编给大家介绍过“mysql的物理备份工具”,收获了小伙伴的一致好评。
今天小编给大家推荐一款名为pgbackrest的物理备份工具,用于完整备份。它非常适合大小为TB级的postgres数据库,支持并行、增量和差异备份,包括支持云备份。
下载或了解相关资料可复制以下链接到浏览器:
https://github.com/pgbackrest/pgbackrest/releases
接下来,小编为大家讲讲pgbackrest的作用及如何快速使用pgbackrest进行备份。
1 为什么选择pgbackrest
1、开源备份工具,使用此工具不涉及许可或额外费用;
2、支持并行备份,可以将压缩文件流式传输到本地或远程存储库或云;
3、支持增量和差异备份;
4、将备份流式传输到云,支持AWS、Azure和GCS兼容对象存储;
5、支持加密,存储库可以由pgbackrest加密保护备份;
6、不需要本地暂存区将备份流式传输到远程存储或云,可直接将备份流式传输到云或远程存储库,且无需在本地写入任何文件;
7、在PostgreSQL中支持数百万或数十亿的对象备份;
8、用于还原和恢复的命令简单,包括时间点恢复,在PITR手动拉取某个WAL段时,无需手动干预;
9、用作企业备份工具的原因:该工具可以作为统一解决方案,从单个备份服务器跨基础架构维护所有PostgreSQL数据库的备份;
10、支持从已使用流式复制配置的备用服务器(或只读副本)进行备份;
11、能够利用多台备用服务器的计算能力进行备份;
12、支持根据配置自动保留备份和存档;
13、支持并行异步归档以提高归档速度;
14、支持备份具有数千个表空间的Postgres数据库。
2 pgbackrest备份实操
接下来,小编为大家介绍pgbackrest备份的具体操作,主要分为以下四步:
2.1 第一步:软件安装
本次采用源码编译安装。安装前需要准备环境,处理依赖包,相关命令如下:
yum -y install openssl-devel libxml2-devel lz4-devel libzstd-devel bzip2-devel libyaml-devel postgresql-devel
随后,创建相关目录,相关命令如下:
mkdir /usr/bin/pgbackrest chown postgres.postgres /usr/bin/pgbackrest/ chmod 755 /usr/bin/pgbackrest/ mkdir -p /etc/pgbackrest/conf.d touch /etc/pgbackrest/pgbackrest.conf chmod 640 /etc/pgbackrest/pgbackrest.conf chown postgres.postgres -R /etc/pgbackrest/ mkdir -p -m 770 /var/log/pgbackrest chown postgres.postgres /var/log/pgbackrest/
接着,将安装包解压到指定路径,相关命令如下:
tar -zvxf pgbackrest-release-2.41.tar.gz -C /opt
进入到pgbackrest目录,相关命令如下:
cd /opt/pgbackrest-release-2.41/src
然后,进行安装前环境编译检查,相关命令如下:
/configure --prefix=/usr/bin/pgbackrest/
安装pgbackrest,相关命令如下:
make -j24 && make install -j24
设置环境变量,相关命令如下:
[root@comic-ptest pgbackrest]# vim /etc/profile.d/pgbackrest.sh export PGBACKREST_HOME=/usr/bin/pgbackrest export PATH=$PGBACKREST_HOME/bin:$PATH [root@comic-ptest pgbackrest]# source /etc/profile.d/pgbackrest.sh
最后,进行安装确认,相关命令如下:
root@comic-ptest src]# pgbackrest pgBackRest 2.41 - 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. [root@comic-ptest src]# pgbackrest version pgBackRest 2.41
2.2 第二步:配置软件
对于复杂或设置很多选项的安装,pgbackrest配置文件更实用。首先,配置pgbackrest参数,相关命令如下:
vim /etc/pgbackrest/pgbackrest.conf [global] log-level-file=detail #日志级别 log-path=/var/postgresql/pgbackrest/logs #备份日志输出路径 repol-path=/var/postgresql/pgbackrest/repos #备份和归档仓库路径 #repo1-retention-archive=500 #保留500个归档日志 repo1-retention-full=2 #保留2个全量备份 与 repo1-retention-archive不可同时启用,二个参数同时配置优先生效full [demo] pg1-path=/home/pgdata/12/data #postgresql数据目录 pg1-host-config-path=/etc/pgbackrest pg1-port=5001 pg1-user=postgres [global:archive_push] compress-level=3 #指定压缩级别[bz2 - 9;gz - 6 ; lz4 - 1;zst - 3]
其次,配置postgres参数,修改归档参数,利用pgbackrest管理和归档wal日志,相关命令如下:
vim postgresql.auto.conf archive_command = '/usr/bin/pgbackrest/bin/pgbackrest --stanza=demo archive-push %p' #%p表示pg_wal目录路径和日志文件名 archive_mode = on #开启流复制 listen_addresses = '0.0.0.0' #则监听程序只绑定在本地所有的IPV4 地址上,若值为* 监听程序绑定在所有本地IP上 log_line_prefix = '' #设置日志输出格式(能够记录时间,用户名称,数据库名称,客户端IP和端口,方便定位问题),非特殊要求设置为禁用 max_wal_senders = 6 #通过 pg_basebackup 备份或流复制备库和主库同步占用主库的最大并发连接数 wal_level = replica # 需要流复制物理备库、归档、时间点恢复时,设置为replica,需要逻辑订阅或逻辑备库则设置为logical。
2.3 第三步:工具初始化
首先,修改本地免密码登录,相关命令如下:
[postgres@comic-ptest data]$ vi pg_hba.conf local all all trust
其次,创建初始化备份,相关命令如下:
pgbackrest --stanza=demo --log-level-console=info stanza-create pgbackrest --stanza=demo --log-level-console=info stanza-create 2022-09-30 10:55:26.692 P00 INFO: stanza-create command begin 2.36: --exec-id=80942-18c949f2 -- log-level-console=info --pg1-path=/var/kingdee_2022/postgres/pg_data_copy --pg1-port=5433 -- pg1-user=postgres --repo1-path=/var/kingdee_2022/postgres/pgbackrest/repos --stanza=demo 2022-09-30 10:55:27.308 P00 INFO: stanza-create for stanza 'demo' on repo1 2022-09-30 10:55:27.316 P00 INFO: stanza 'demo' already exists on repo1 and is valid 2022-09-30 10:55:27.316 P00 INFO: stanza-create command end: completed successfully (626ms)
最后,进行初始化备份校验,相关命令如下:
postgres pgbackrest --stanza=demo --log-level-console=info check 2022-09-30 10:55:36.157 P00 INFO: check command begin 2.36: --exec-id=81540-960f77fa -- log-level-console=info --pg1-path=/var/kingdee_2022/postgres/pg_data_copy --pg1-port=5433 -- pg1-user=postgres --repo1-path=/var/kingdee_2022/postgres/pgbackrest/repos --stanza=demo 2022-09-30 10:55:36.762 P00 INFO: check repo1 configuration (primary) 2022-09-30 10:55:37.569 P00 INFO: check repo1 archive for WAL (primary) 2022-09-30 10:55:39.575 P00 INFO: WAL segment 0000000200000EDC0000000C successfully archived to ' /var/kingdee_2022/postgres/pgbackrest/repos/archive/demo/12-1/ 0000000200000EDC/0000000200000EDC0000000C-99ff5
学会pgbackrest备份,再也不怕删库!
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



