Greenplum数据迁移(恢复到配置不同的GP系统)

操作流程:
1、源库并行备份,生成数据库对象的DDL语句,数据导入文件,及数据库索引、约束等DDL语句。
2、将生成的备份文件copy到目标库master节点。
3、目标库串行恢复,先恢复数据库表结构,然后导入数据,最后生成其他数据库对象。

使用gp_dump/gpcrondump并行备份greenplum数据库,如要使用gp_restore或gpdbrestore并行恢复操作,恢复的系统必须与备份的系统具有相同的配置(相同数量的Instance)。

如果想要恢复数据库对象和数据到配置不同的系统(比如系统扩展了更多的Segment),仍然可以使用并行备份文件来恢复,通过GP Master做非并行装载。

要进行非并行装载,必须具备:
1. 全部由gp_dump或gpcrondump操作生成的备份文件。Master的备份文件包含了重建数据库对象的DDL。Segment的备份文件包含了用户数据。
2. Greenplum数据库系统正在运行。
3. 确保在系统中,需要恢复的数据库(Database)已经被创建(创建database的DDL会生成一个单独的文件)。如果查看Segment备份文件的内容,会发现,其简单的包含了COPY命令,数据是分割平面格式。如果收集了所有Instance的备份文件并通过Master装载,即可恢复所有的数据并重分布到新的系统。

恢复到配置不同的GP系统,具体操作如下:

1.首先确保具备了全部的备份文件。
在Master主机上
数据字典表:gp_catalog_1__timestamp
创建数据库SQL语句:gp_cdatabase_1_dbid_timestamp
创建schema object SQL语句:gp_dump_1_dbid_timestamp
创建constraint etc SQL语句:gp_dump_1_dbid_timestamp_post_data

在Segment主机上
用户数据文件:gp_dump_0_ dbid_timestamp
日志文件:gp_dump_status_0_ dbid_timestamp

所有的备份文件必须含有相同时间戳标识符。
缺省状态下,gp_dump在每个Instance的数据目录生成备份文件,因此,可能需要收集所有的备份文件并放置到需要恢复的系统Master主机。
如果Master没有足够的磁盘空间,可以拷贝一个Instance,装载,删除,再拷贝其他Instance。
2.确保在系统中,需要恢复的数据库(Database)已经被创建。例如:

$ createdb database_name

创建database的DDL语句,在备份时会单独作为一个文件存放,文件名字为gp_dump_1_1_cdatabase_timestamp

3.装载Master备份文件以恢复数据库对象。例如:

$ psql database_name -f /gpdb/backups/gp_dump_1_1_20171118

4.装载每个Segment的备份文件以恢复数据。例如:

$ psql database_name -f /gpdb/backups/gp_dump_0_2_20171118
$ psql database_name -f /gpdb/backups/gp_dump_0_3_20171118
$ psql database_name -f /gpdb/backups/gp_dump_0_4_20171118
$ psql database_name -f /gpdb/backups/gp_dump_0_5_20171118

5.装载Table相关对象的文件,恢复数据库对象如索引、触发器、主键约束等:

$ psql database_name -f /gpdb/backups/gp_dump_0_5_20171118_post_data

这样就可以实现配置不同的GP系统的迁移; pg迁移greenplum的原理也是如此。

–参考文献:
《Greenplum4.3.19管理员指南》
《Greenplum迁移到配置不同的GP系统》

猜你喜欢

转载自blog.csdn.net/lijingkuan/article/details/78950992
今日推荐