学会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-99ff5317a0e95b9268cc9cc49510cfc8fa2e6570.gz' on repo1 2022-09-30 10:55:39.575 P00 INFO: check command end: completed successfully (3420ms)
2.4 第四步:备份与还原
(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 - 强制在快速备份的时候使用检查点。否则,备份将在下一个常规检查点之后启动。
(2)增量备份,相关命令如下:
pgbackrest --stanza=demo --log-level-console=info --type=incr backup --process-max=16 >demo_incr_` date +%F_%T `.log &
(3)备份恢复,则需要先进行“备份检查”、随后根据实际需求选择“全量还原”或“增量还原”。
其中,备份检查的相关命令如下:
[postgres@v-db-db pgbackrest]$ pgbackrest infostanza: demostatus: okcipher: nonedb (current)wal archive min/max (12): 0000000100000DEF00000000/0000000200000EDC0000000C full backup: 20220308-164721Ftimestamp start/stop: 2022-03-08 16:47:21 / 2022-03-08 17:20:39wal start/stop: 00000001000009CB00000003 / 00000001000009CB00000004 database size: 1111.3GB, database backup size: 1111.3GBrepo1: backup set size: 199.8GB, backup size: 199.8GBincr backup: 20220308-164721F_20220714-104856Itimestamp start/stop: 2022-07-14 10:48:56 / 2022-07-14 11:21:51wal start/stop: 0000000100000DF600000006 / 0000000100000DF600000006database size: 1791.8GB, database backup size: 1268.3GBrepo1: backup set size: 285.7GB, backup size: 193.2GB backup reference list: 20220308-164721F
在全量还原时,需要先进行“数据库停机”,相关命令如下:
pg_ctl -D /home/pgdata/12/data stop
随后,删除数据库数据目录所有文件,相关命令如下:
rm -rf /home/pgdata/12/data
接着,进行全量还原,相关命令如下:
pgbackrest --stanza=demo --log-level-console=info restore --pg1-path=/home/pgdata/12/reduction_data --process-max=16 > demo_restore_` date +%F_%T `.log &
注意观察返回结果,通过关键字successfully检查成功与否。
最后,进行数据验证,相关命令如下:
pg_ctl -D /home/pgdata/12/data start
选择增量还原时,需要查看增量备份信息,相关命令如下:
pgbackrest info --stanza=demo --set=20220308-164721F_20220714-104856I stanza: demo status: ok cipher: none db (current) wal archive min/max (12): 0000000100000DEF00000000/0000000200000EDC0000000C incr backup: 20220308-164721F_20220714-104856I timestamp start/stop: 2022-07-14 10:48:56 / 2022-07-14 11:21:51 wal start/stop: 0000000100000DF600000006 / 0000000100000DF600000006 database size: 1791.8GB, database backup size: 1268.3GB repo1: backup set size: 285.7GB, backup size: 193.2GB backup reference list: 20220308-164721F database list: mc (16385), per_ierp_drp (16389), per_ierp_fi (16388), per_ierp_hr (16391), per_ierp_meta (16386), per_ierp_scm (16390), per_ierp_secd (16392), per_ierp_sys (16387), pmm_user (13194183), postgres (13593), pre_other (824143), pre_test_cr (521775), pre_test_de (521776), pre_test_drp (521777), pre_test_eip (521778), pre_test_fi (521774), pre_test_hr (521779), pre_test_log (521780), pre_test_meta (521781), pre_test_scm (521782), pre_test_swc (521783), pre_test_sys (521784), pre_test_taxc (521785), pre_test_tmc (521786), pre_test_wfs (521787), test_001_drp (12757354), test_001_fi (12636748), test_001_hr (12885263), test_001_meta (12938170), test_001_scm (12792590), test_001_secd (12937340), test_001_sys (12586844)
pre_test_scm库还原,相关命令如下:
pgbackrest --stanza=demo --delta --db-include=pre_test_scm restore
完成以上步骤后,可以登录数据库,查看表及数据是否完整。
3 划重点
pgbackrest备份好处多多,它不仅作为开源备份工具,不涉及许可或额外费用,且支持并行备份,可以将压缩文件流式传输到本地或远程存储库或云等诸多优点。
pgbackrest备份的具体操作,主要分为以下四步:“软件安装”、“软件配置”、“工具初始化”、“备份与还原”。
#往期推荐#
更多精彩内容,“码”上了解!↓
学会pgbackrest备份,再也不怕删库!
本文2024-09-23 01:12:30发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144465.html