Копирование схемы Vertica или всех таблиц в схеме из одного физического кластера в другой физический кластер

Я пытаюсь экспортировать и импортировать схему Vertica из одного физического кластера в другой физический кластер. В моем тестовом экземпляре есть один кластер, а в моем производственном экземпляре - 3 кластера.

Я изучил следующие варианты, но они ограничены перемещением данных на одном физическом экземпляре Vertica:

  1. ЭКСПОРТ В ВЕРТИКУ ..
  2. КОПИРОВАТЬ таблицу схемы ИЗ ВЕРТИКИ ...

Хотел бы знать, есть ли возможность переместить схему Vertica из одного физического экземпляра Vertica в другой с другой конфигурацией кластера.


person bhargav reddy    schedule 30.07.2014    source источник
comment
Вы хотите перенести данные или DDL схемы?   -  person Kermit    schedule 31.07.2014


Ответы (2)


Это хитрая манипуляция, у которой есть много проблем:

  • Если вы скопируете DDL, вы потеряете текущее значение последовательностей, что может означать дублирование первичного ключа при вставке данных.
  • Если столбцы настроены как AUTO_INCREMENT, вы не сможете вставлять в него данные, как они есть в источнике (вы не можете принудительно создать столбец auto_increment, хотя я считаю, что это могло быть исправлено в новых выпусках).
  • Если вы копируете DDL между кластерами с другим числом узлов, если имена узлов являются частью определения проекции, вы получите то, что вам не нужно.
  • Как вы заметили, разные сети не позволяют использовать CONNECT.

Попытка помочь с этим была сделана на python с помощью утилиты pyvertica и особенно скрипт vertica_migrate. Вы можете найти этот документ на странице https://pyvertica.readthedocs.org.

Это сложная работа, и я знаю, что в этом скрипте есть некоторые проблемы, хотя он уже помог мне очень.

Надеюсь, это помогло,

person Guillaume    schedule 31.07.2014
comment
Спасибо, что указали на ресурсы, будем держать вас в курсе результатов - person bhargav reddy; 01.08.2014

Вы можете использовать либо _1 _ или _2 _ для импорта / экспорта данных в другую базу данных Vertica (независимо от конфигурации узла). Кроме того, целевая таблица уже должна существовать. Вы можете использовать EXPORT_OBJECTS < / a> для экспорта 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;
person Kermit    schedule 30.07.2014
comment
Спасибо за ответ. Вот моя проблема, мое производство находится на prod.abc.com, а тест - на серверах test.abc.com, теперь я вхожу на целевую машину, которая производит, используя следующую команду: 1. ПОДКЛЮЧИТЕСЬ К пользователю VERTICA db USER ПАРОЛЬ 'пароль' НА 'prod.abc.com', 5433; А теперь, чтобы переместить данные из теста в производство, как мне указать имя сервера при экспорте в команду vertica test.abc.com 2. ЭКСПОРТ В VERTICA db.schema1.table1 ИЗ 'test.abc.com'.testschema.table1 ; - person bhargav reddy; 31.07.2014
comment
Оба ваших экземпляра находятся в частной сети? База данных, в которой вы выполнили команду CONNECT TO VERTICA, является вашим источником. На этом этапе вы уже установили соединение с целью. Единственные квалификаторы - это те, которые описаны в моем ответе. - person Kermit; 31.07.2014
comment
Кермит, спасибо за ответ. Как я уже упоминал, у моего тестового экземпляра один кластер, а у производственного - 3 кластера. Я попытался войти в Test и попытался экспортировать в производственную среду, но теперь у меня возникает следующая проблема: ОШИБКА 4534: получение на v_vertica_prod1_node0001: получение сообщения от v_prod_db1_node0008 не выполнено [обнаружено исключение в readToQueue: VIAssert (validateHeader ()) не удалось] - person bhargav reddy; 31.07.2014
comment
@bhargavreddy Кластер - это набор узлов. Вы хотите сказать, что у вас есть один тестовый узел и производственный кластер из трех узлов? Оба экземпляра находятся в частной сети? - person Kermit; 31.07.2014
comment
Кермит, извините за неправильное использование, да, тест имеет один узел, а производство имеет 3 узла, и да, оба экземпляра находятся в частной сети. - person bhargav reddy; 01.08.2014