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

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

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

在以往的文章中,小编给大家介绍“mysql的物理备份工具”,收获了小伙伴的一致好评。


今天小编给大家推荐一款名为pgbackrest物理备份工具,用于完整备份。它非常适合大小为TB级的postgres数据库,支持并行增量差异备份,包括支持云备份


下载或了解相关资料可复制以下链接到浏览器:

https://github.com/pgbackrest/pgbackrest/releases 


接下来,小编为大家讲讲pgbackrest的作用及如何快速使用pgbackrest进行备份。




1 为什么选择pgbackrest


1、开源备份工具,使用此工具不涉及许可额外费用

2、支持并行备份,可以将压缩文件流式传输到本地远程存储库

3、支持增量差异备份

4、将备份流式传输到云,支持AWSAzureGCS兼容对象存储;

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备份的具体操作,主要分为以下四步:“软件安装”“软件配置”“工具初始化”“备份与还原”





#往期推荐#


# 关于rsync,你不知道的事

# 浅谈性能测试监控系统,做好关键指标的监控

MySQL数据备份与回档,让数据有“备”无患

# 元数据升级失败怎么办?排查指南速看!


更多精彩内容,“码”上了解!↓




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

在以往的文章中,小编给大家介绍过“mysql的物理备份工具”,收获了小伙伴的一致好评。今天小编给大家推荐一款名为pgbackrest的物理备份工...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息