将 Vertica Schema 或架构中的所有表从一个物理集群复制到另一个物理集群
-
21-12-2019 - |
题
我正在尝试将 Vertica 架构从一个物理集群导出和导入到另一个物理集群。我的测试实例有一个集群,我的生产实例有 3 个集群。
我探索了以下选项,但它们仅限于在一个物理 Vertica 实例上移动数据:
- 导出到 VERTICA ..
- 从 VERTICA 复制 schema.table ...
我想知道是否有一个选项可以将 Vertica 架构从一个物理 Vertica 实例移动到具有不同集群配置的另一个物理 Vertica 实例。
解决方案
这是棘手的操作,有很多问题:
- 如果复制ddls,则会丢失序列的当前值,这可能会在插入数据时表示重复主键。
- 如果将列设置为auto_increment,则无法在源上插入其中的数据(您不能强制auto_increment列,尽管我相信这可能已在新版本中修复)。
- 如果在具有不同数量的节点之间的簇之间复制DDL,如果节点名称是投影定义的一部分,则最终将与您不想要的东西结束。
- 正如您所知,不同的网络将防止使用连接。
尝试通过 pyvertica 实用程序在Python中完成了在Python中完成的。 vertica_migrate 脚本。您可以在 https://pyvertica.readthedocs.org
中找到doc。其他提示
您可以使用 COPY FROM VERTICA
或者 EXPORT 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;
不隶属于 StackOverflow