GP 数据备份工具GPBACKUP流程说明
Gpbackup 是专门用来做gp数据库的并行数据备份工具。这里通过对整个备份流程了解该工具的原理。
- 备份流程
流程说明:
1、第一步会对入参检查, 包括 日志级别、备份类型(如只包含数据、只包含元数据、增量)、包含或排的schema 、table , 包含或排除的表文件,备份配置文件、 是否压缩, 备份路径等入参进行判断。
2、第二步会备份前期准备,包括 设置日志级别、判断集群是否处于扩容状态、创建备份锁文件(时间戳)、初始化连接池、过滤 包含、排除 备份表选项, 以及在所有节点上创建备份目录,判断并解析插件配置、初始化备份报告等。
3、第三步对数据进行备份, 备份前首先会检索表包括哪些表、叶子分区,并过滤元数据、数据的分区类型,其次 会根据入参判断是备份 元数据还是 数据以及叶子分区亦或是 全局备份(其中 全局备份会把包括队列、分组、角色、权限、表空间、DDL、数据库配置参数等元数据一起备份, pre数据(包括 依赖对象、转换 、操作对象),post数据(包括 索引、规则、触发器)、统计数据), 数据 。
- 备份对象
- 指定数据库备份时,备份其中的数据库对象包括 会话配置、schema、扩展语言、队列、命令、表、索引、DDL、函数、转化字段、类型、视图、角色、权限、统计信息等。
- 默认情况下备份全局对象,但默认不会恢复,需制定—with-globals, 可以通过 –without-globals 防止备份全局对象。全队对象包括 表空间、数据库、数据库级配置参数、资源组、资源队列、角色、权限。
- 不包含在备份中的schema: gp_toolit、information_schema、pg_aoseg、pg_bitmapindex、pg_catalog、 pg_toast、 pg_temp
- 增量备份说明
当插入或修改数据时,gp_toolkit.__gp_aoseg 的modcount 会随操作的记录数增加,更新数据时并非正常更新记录值,而是将旧数据标记为删除,在插入新的数据。删除数据也会有数据记录。所以增量备份只对AO 表生效。堆表因为任意一个数据库都有可能变更,所以不能实现逻辑增量备份。
- 备份限制
- 增量备份只对AO表起作用。
- 备份时会锁表,在备份期间删表会导致备份失败。
- 使用gpbackup创建备份时,只能还原到于源集群相同数量的segment实例的GP数据库集群。
- 附录
参考文档:
1.备份日志及备份报告
2.gpbackup源码
3.http://docs-cn.greenplum.org/v6/admin_guide/managing/backup-gpbackup.html#topic_vh5_1hd_tbb