Greenplum查询:将对象从Pre-Prod移动到Prod Env的最佳策略

时间:2014-12-12 12:16:32

标签: database-migration greenplum

我有两个不同的环境生产(新)和​​预生产(现有),我们已经准备好集群,并在新的生产环境中安装了GP。

我想知道将对象从预生产环境移动到生产环境的最佳方法是什么, 我知道:

  1. 使用gp_dump

  2. 使用pg_dump

  3. 手动转储每个对象(表ddl,函数ddl,查看ddl,序列ddl等)

  4. 如果只有对象需要从一个环境备份和恢复到另一个环境,我想知道最佳策略以及每个策略的优缺点。

    需要您的宝贵意见。

1 个答案:

答案 0 :(得分:0)

可用的策略,按优先级排列:

  1. 使用gpcrondump和gpdbrestore。仅当预生产和生产中的段数相同且dbid相同时才会起作用。使用模式传输整个数据库的最快方法,因为它可以用作并行转储和并行恢复。因为它是备份,它会在短时间内锁定pg_class,这可能会在生产系统上造成一些问题
  2. 如果要传输的对象数量很少,您可以使用gptransfer实用程序,请参阅用户指南以供参考。它使您能够在预生产和生产的各个部分之间直接传输数据。要求是预生产环境的所有段服务器都应该能够看到生产中的所有段,这意味着应该将其添加到同一VLAN进行数据传输。
  3. 编写自定义代码,并在共享主机上的管道对象上使用可写外部表和可读外部表。此外,您还必须编写一些手动代码来比较DDL。这种方法的好处是你可以重复使用外部表在环境之间多次传输数据,如果没有更改DDL,你的传输速度会很快,因为数据不会被放到磁盘上。但是所有数据都将通过单个主机传输,这可能是一个瓶颈(高达10gbps的传输速率,共享主机具有双10GbE连接)。另一个很大的优点是pg_class
  4. 上没有锁
  5. 在源系统上运行gpcrondump并在目标系统上串行恢复数据。如果您想使用备份恢复解决方案并且源系统和目标系统具有不同数量的段,这是一种方法
  6. 通常,一切都取决于您想要实现的目标:移动对象一次,在群集上不活动的时间内每月移动一次,每周移动所有对象而不停止生产,每天移动选定的对象不停止生产等。结果将真正取决于您的需求