代码拉取完成,页面将自动刷新
1502
gs_probackup支持压缩文件备份
已合并
【标题】(请简要描述下实现的内容)
【实现内容】:
0. 将压缩相关代码提取作为一个so,方便所有工具链接引用
- 压缩页面增加CRC32校验字段。为此,对完整性校验函数做了扩充,支持任意长度字符传入。长度不足时,会补零计算。
uint32 DataBlockChecksum(char* data, uint32 size, bool zeroing)
- 将压缩相关的接口读取等工具使用的函数统一抽离到src/lib/page_compression文件目录下,编译生成libpagecompression.so动态库。其他工具在makefile中通过-lpagecompression的方式引用。
- pagecompression中使用到的函数,通过软链接和编译方式,避免重复代码拷贝。
- 根据条件同步修改pg_rewind、pg_ctl、pagehack等工具,降低代码重复率。
- openGauss的pg_probackup配套支持压缩表的数据备份。
- probackup备份支持方式较为简单:通过将压缩后的页面空闲空间填零+0的方式,兼容后续所有流程操作。
- 在backup_content.control中同步记录压缩参数。
- 数据恢复时仍然按照8k数据文件的恢复方式。在单文件恢复的最后流程,判断是否为压缩文件,如果是,按页面读取重构整个压缩文件。(此处参考probackup的merge功能,先restore在backup。我们此处是先restore在reconstruct压缩文件。)
- 同步支持makefile、cmakefile编译
【关联issue】:
【开发自验报告】:
- 请附上自验结果(内容或者截图)
- 远程备份结果集正常
- 远程恢复节点数据一致
- 是否可以添加fastcheck测试用例,如是,请补充fastcheck用例
- 是否涉及资料修改,如是,在docs仓库补充资料
- 是否考虑支撑升级和在线扩容等扩展场景
- 是否考虑异常场景/并发场景/前向兼容/性能场景
- 是否对其他模块产生影响
【其他】
- 由于压缩表填零,默认情况下是作压缩的,恢复时二次IO数据统计如下,压缩额外代码分支会让压缩文件备份比预期满19%,在性能规格15-20%内: