Greenplum增量备份
gpcrondump和gpdbrestore实用程序支持增量备份和附加优化表的恢复,包括面向列的表。
使用gpcrondump选项 - incremental创建增量备份。
如果在上次全量或者增量备份之后有过后续的下列操作的话,增量备份只会备份追加优化或者面向列的表。
ALTER TABLE
DELETE
INSERT
TRUNCATE
UPDATE
DROP and then re-create the table
对与分区追加优化的表,只有改变过的分区能被备份。
每个完整备份和增量备份都会备份堆表。
当追加优化分区表或者面向列的表中已经改变的数据相对未被改变的数据来说更小的话,增量备份是有效率的。
每当gpcrondump执行时,它都会为每个优化表分区和面向列的表和分区在数据库创建包含行数的状态文件,这种状态文件也存储有像truncate和alter之类的元数据。当gpcrondump附带incremental选项执行的时候,它会将现在的状态与存储中的状态比较,判断是否表分区应该被包含在增量备份中。
唯一的14位时间戳key标识包含增量备份集的文件。
为了创建增量备份或者从增量备份中还原数据,你需要完整的备份集。
一个完整的备份集包含全量备份和从上次全量备份以来创建的增量备份。
当你归档增量备份的时候,所有在上次全量备份和目标增量备份之间的增量备份必须也要归档。
你必须归档所有在主节点和segment节点中的文件。
对于greenplum数据库节点配置的更改会使得增量备份无效。
改变了segment配置之后,你必须创建全量备份,再创建增量备份。1
1、全库增量备份范例
每次的备份都有一个key,它是一个备份创建的时间戳标识,例如,你在公元2019年4月17号创建了一次备份,那么备份的文件名就会包含20190417hhmmss,后面的hhmmss代表时分秒。
根据以上范例,判断你对于某数据库(例如 mytest)创建的全增备份。
创建全量备份:
gpcrondump -x mytest -u /backupdir
接下来,如果在追加优化表中发生了一些更改,你就使用下列命令创建增量备份:
gpcrondump -x mytest -u /backupdir --incremental
当你选定了-u选项,备份就会被创建在每个greenplum数据库主机的目标路径,观察路径中的文件名,不含有table和table_list时间戳是全备份的时间戳。
需要创建新的时间戳,必须从上次全备份时间戳到现在为止全部时间戳文件存在。
增量备份还原
gpdbrestore -t 20190417025537 -u / backupdir
提供增量备份还原功能,数据库崩坏,通过备份文件数据可恢复到指定的时间戳版本。依然需要从上次全备份时间戳到现在为止全部时间戳文件。
即如果我全量备份了两次:
122 全备
123 增备
124 全备
125 增备
126 增备
那么,我想要恢复到125时间戳的数据,需要124-126时间戳文件全部存在才能实现,而122~123文件可依需要保存或者删除。
2、部分数据集增量备份范例
- 有时候我们只是改动了一部分,需要进行数据增量或者全量备份但是可以适当缩小范围,不必全库增量或者全量备份,避免对资源的过度占用。
我们应该学会用增量备份来备份一组数据库表,在gpcrondump中用–prefix来标识备份数据集,可自定义取值。
例如,对myschema这个schema中的表进行增量备份,首先创建一个全量备份:
gpcrondump -x mydb -s myschema -u /opt/backupdir --prefix my
这里可不指定文件路径,自动放在主节点master文件夹下
-s选项指定myschema中适合放入增量备份的表。
可参考官网文档
- 创建完全量备份之后,我们就可以来创建指定schema的增量备份,增量备份自动限制在最近一次–prefix完全备份中的所有表
gpcrondump -x mydb -u /opt/backupdir --incremental --prefix my
- 下列命令可以在最近一次全备范围内指定表,包含或者排除
gpcrondump -x mydb --incremental -u /opt/backupdir --prefix my --list-filter-tables
- 在此备份下的还原需要带上标识–prefix参数
gpdbrestore -t 20190417043923 -u /opt/backupdir --prefix my
-t后的参数依然是最近的schema更新时间戳
指定数据集增量的时间戳文件会带上prefix前缀,如图my前缀。
3、增量备份还原
可以不必指定备份类型,系统自动检测,直接恢复最近的备份MYDB数据库。
gpdbrestore -s mydb
ps:慎用!
如果gpdbstore中包含-q选项,它会将备份的类型信息写入日志文件。
–noplan选项可以只还原包含在增量备份中的数据。
-
翻译官网资料 ↩︎