将Greenplum并行备份恢复到配置不同的新集群-阿里云开发者社区

开发者社区> 数据库> 正文

将Greenplum并行备份恢复到配置不同的新集群

简介: 在Greenplum中,我们可以使用 gp_restore 或者 gpdbrestore 对数据库进行并行恢复,但是并行恢复要求要恢复的新集群与备份集群拥有同样的配置(节点实例数量)。但是如果我们的新集群节点数与原集群不一样怎么办?还能使用原备份文件吗?答案是肯定的,但是由于节点数量不一样了,我们只能通过Master节点进行非并行备份。

在Greenplum中,我们可以使用 gp_restore 或者 gpdbrestore 对数据库进行并行恢复,但是并行恢复要求要恢复的新集群与备份集群拥有同样的配置(节点实例数量)。但是如果我们的新集群节点数与原集群不一样怎么办?还能使用原备份文件吗?答案是肯定的,但是由于节点数量不一样了,我们只能通过Master节点进行非并行备份。

准备工作:

  • 首先我们手里要有一份 gp_dump 或者 gpcrondump 导出的并行备份文件。文件由两部分组成,来自Master的备份包括重建库所用的DDL语句,来自Segments的备份包括所有的用户数据。
  • 目标Greenplum数据库集群正在运行。
  • 在目标库中,创建好对应数据库。

恢复数据到新集群

并行备份的数据文件,实际上是由COPY命令组成的文本格式文件,恢复的逻辑就是从Master将这些数据一个个导入数据库,数据会根据目前集群的状况进行重分布入库。具体步骤如下:

  • 首先确保备份集合完整。备份文件包括Master节点文件:gp_dump_1_1_<timestamp>,对应于每个Segment实例的文件:gp_dump_0_2_<timestamp>,gp_dump_0_3_<timestamp>等。其中timestamp的值应该一致,代表导出的时间点。默认的数据文件存放在各个节点的dumps文件夹下,操作时需要将这些数据迁移到新恢复节点的Master上,如果Master空间不够,可以单个迁移恢复后再操作下一个。
  • 确保要恢复的数据库已经创建(数据库名称已存在),如没有创建,可使语句创建:createdb dbname
  • 恢复数据库对象:$ psql dbname -f /gpdb/backups/gp_dump_1_1_20170727
  • 恢复数据:
$ psql database_name -f /gpdb/backups/gp_dump_0_2_20170727
$ psql database_name -f /gpdb/backups/gp_dump_0_3_20170727
$ psql database_name -f /gpdb/backups/gp_dump_0_4_20170727
$ psql database_name -f /gpdb/backups/gp_dump_0_5_20170727
...

End~

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章