将架构中的Vertica架构或所有表从一个物理集群复制到另一个物理集群

时间:2014-07-30 21:04:48

标签: schema database-migration vertica

我正在尝试将Vertica架构从一个物理集群导出并导入另一个物理集群。 我的Test实例有一个集群,我的生产实例有3个集群。

我探索了以下选项,但它们仅限于在一个物理Vertica实例上移动数据:

  1. 出口到VERTICA ..
  2. COPY schema.table FROM VERTICA ...
  3. 想知道是否有选项可以将Vertica架构从一个物理Vertica实例移动到另一个实例,具有不同的群集配置。

2 个答案:

答案 0 :(得分:1)

这是一个棘手的操作,有很多问题:

  • 如果复制DDL,则会丢失序列的当前值,这可能意味着在插入数据时会出现重复的主键。
  • 如果列设置为AUTO_INCREMENT,您将无法在源中插入数据(您不能强制使用auto_increment列,但我相信这可能已在新版本中修复)。
  • 如果在具有不同节点数的群集之间复制DDL,如果节点名称是投影定义的一部分,则最终会得到您不想要的内容。
  • 如您所见,不同的网络将阻止使用CONNECT。

通过pyvertica实用程序,特别是vertica_migrate脚本,在python中尝试帮助解决这个问题。您可以在https://pyvertica.readthedocs.org找到该文档。

这是一项棘手的工作,我知道这个剧本中存在一些问题,虽然它已经帮助我很多

希望这有帮助,

答案 1 :(得分:0)

您可以使用COPY FROM VERTICAEXPORT TO VERTICA将数据导入/导出到另一个Vertica数据库(无论节点配置如何)。此外,目标表必须已存在。您可以使用EXPORT_OBJECTS导出DDL。这两种方法都允许从早期版本的版本迁移到上一个主要版本(运行6.x,可以从5.x导入)。

在下面的示例中,我将使用EXPORT TO VERTICA将数据从源数据库导出到目标数据库。

您必须首先创建与其他数据库的连接:

CONNECT TO VERTICA VMart USER dbadmin PASSWORD '' ON 'VerticaTarget',5433;

然后使用EXPORT TO VERTICA将数据从源导出到目标数据库:

EXPORT TO VERTICA VMart.schema.customer_dimension FROM schema.customer_dimension;
                  |______________________________|     |_______________________|
                                 |                                 |
                              Target                            Source

DISCONNECT VMart;