将Greenplum并行备份恢复到配置不同的新集群
在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~
最后更新:2017-07-28 07:02:32