openGauss数据库源码解析系列文章——备份恢复机制:openGauss增量备份技术(上)_opengauss 备份命令(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

10.2 openGauss****增量备份技术

全量备份每次备份都需要复制全部数据库的文件,备份时间和存储空间的开销都比较大。增量备份只备份自上次备份以来的数据改变,可以减少备份的开销。

openGauss增量备份工具为gs_probackup。gs_probackup支持全量备份、增量备份、对备份元数据进行管理、设置备份的留存策略、合并增量备份、删除过期备份,并且可备份外部目录的内容,如脚本文件、配置文件、日志文件、dump文件等。

增量备份需要数据库服务器端的配合,在conf文件中配置参数enable_cbm_tracking = on,启动数据库服务器对脏页数据修改的跟踪。

增量备份的主要逻辑在gs_probackup工具中实现,一些备份原理和前面介绍的全量物理备份相似,下面主要介绍gs_probackup工具的代码实现逻辑。源代码在src\bin\pg_probackup目录下,gs_probackup是一个独立的二进制工具,有自己的主函数,主函数在pg_probackup.cpp文件中。主函数是增量备份处理的一个框架,开始时调用pgBackupInit初始化当前备份的元数据信息,然后调用init_config初始化实例的备份配置信息,解析备份子命令和命令行参数,根据子命令调用子命令的处理函数进行处理。

10.2.1  gs_probackup子命令

gs_probackup支持的功能、子命令和处理函数如下。

(1) 打印gs_probackup版本,代码如下:

gs_probackup -V|–version
gs_probackup version

这个子命令没有处理函数,直接打印显示当前版本号。

(2) 显示gs_probackup命令的帮助信息。如果指定了gs_probackup的子命令,则显示可用于此子命令的参数的详细信息。代码如下:

gs_probackup -?|–help

gs_probackup help [command]

处理函数为help_command和help_pg_probackup。

(3) 初始化备份路径backup-path中的备份目录,该目录将存储备份的内容。如果备份路径backup-path已存在,则backup-path必须为空目录。代码如下:

gs_probackup init -B backup-path [–help]

处理函数为do_init。

(4) 在备份路径backup-path内初始化一个新的备份实例,并生成pg_probackup.conf配置文件,该文件保存了指定数据目录pgdata-path的gs_probackup设置。代码如下:

gs_probackup add-instance -B backup-path -D pgdata-path --instance=instance_name
[-E external-directories-paths]
[remote_options]
[–help]

处理函数为do_add_instance。

(5) 在备份路径backup-path内删除指定实例相关的备份内容,代码如下:

gs_probackup del-instance -B backup-path --instance=instance_name
[–help]

处理函数为do_delete_instance。

(6) 将指定的连接、压缩、日志等相关设置添加到pg_probackup.conf配置文件中,或修改已设置的值,不要手动编辑pg_probackup.conf配置文件。代码如下:

gs_probackup set-config -B backup-path --instance=instance_name
[-D pgdata-path] [-E external-directories-paths] [–restore-command=cmdline] [–archive-timeout=timeout]
[–retention-redundancy=retention-redundancy] [–retention-window=retention-window] [–wal-depth=wal-depth]
[–compress-algorithm=compress-algorithm] [–compress-level=compress-level]
[-d dbname] [-h hostname] [-p port] [-U username]
[logging_options] [remote_options]
[–help]

处理函数为do_set_config。

(7) 将备份相关设置添加到backup.control配置文件中,或修改已设置的值。代码如下:

gs_probackup set-backup -B backup-path --instance=instance_name -i backup-id
[–note=text] [pinning_options]
[–help]

处理函数为do_set_backup。

(8) 显示位于备份目录中的pg_probackup.conf配置文件的内容。可以通过指定–format=json选项,以json格式显示。默认情况下,显示为纯文本格式,代码如下:

gs_probackup show-config -B backup-path --instance=instance_name
[–format=plain|json]
[–help]

处理函数为do_show_config。

(9) 显示备份目录的内容。如果指定了instance_name和backup_id,则显示该备份的详细信息。可以通过指定–format=json选项,以json格式显示。默认情况下,备份目录的内容显示为纯文本格式,代码如下:

gs_probackup show -B backup-path
[–instance=instance_name [-i backup-id]] [–archive] [–format=plain|json]
[–help]

处理函数为do_show。

(10) 创建指定实例的备份,代码如下:

gs_probackup backup -B backup-path --instance=instance_name -b backup-mode
[-D pgdata-path] [-C] [-S slot-name] [–temp-slot] [–backup-pg-log] [-j threads_num] [–progress]
[–no-validate] [–skip-block-validation] [-E external-directories-paths] [–no-sync] [–note=text]
[–archive-timeout=timeout]
[logging_options] [retention_options] [compression_options]
[connection_options] [remote_options] [pinning_options]
[–help]

处理函数为do_backup。

(11) 从备份目录backup-path中的备份副本恢复指定实例。如果指定了恢复目标选项,gs_probackup将查找最近的备份并将其还原到指定的恢复目标。否则,使用最近一次备份,代码如下:

gs_probackup restore -B backup-path --instance=instance_name
[-D pgdata-path] [-i backup_id] [-j threads_num] [–progress] [–force] [–no-sync] [–no-validate] [–skip-block-validation]
[–external-mapping=OLDDIR=NEWDIR] [-T OLDDIR=NEWDIR] [–skip-external-dirs] [-I incremental_mode]
[recovery_options] [remote_options] [logging_options]
[–help]

处理函数为do_restore_or_validate。

(12) 将指定的增量备份与其父完全备份之间的所有增量备份合并到父完全备份。父完全备份将接收所有合并的数据,而已合并的增量备份将作为冗余被删除。代码如下:

gs_probackup merge -B backup-path --instance=instance_name -i backup_id
[-j threads_num] [–progress] [logging_options]
[–help]

处理函数为do_merge。

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-V2xlXAKT-1713710746083)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值