Перемещение данных между идентичными схемами базы данных в MySQL - PullRequest
0 голосов
/ 05 октября 2010

У меня есть 2 базы данных с одинаковыми схемами.Одна представляет собой основную базу данных, предназначенную для производственных / маркетинговых целей (вероятно, на 95% SELECT), а другая является «ведомой» и запускает SELECT / INSERT для заказов, клиентов и т. Д. Для определенного микросайта.

Причинадля разделения не все микросайты будут использовать одни и те же продукты / специальные предложения / купоны и т. д., и API находится в разработке, но он не будет завершен в течение некоторого времени.

Мне нужно перенести данные изподчиненная / микро-сайт базы данных к главной базе данных и поддерживать ключевые ассоциации.

Пример: главная база данных имеет заказы № 1 и № 2 (скажем, на orders.id), и у меня есть несколько новых заказов на моем микробаза данных, которую я хочу перенести в основную базу данных, чтобы производство / производство могли начать обработку этих заказов.

Как можно переместить эти данные, используя самый простой способ, чтобы избежать конфликтов / дублирования ключей?

Спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 05 октября 2010

Если у вас есть 2 базы данных, и первичные ключи (с автоинкрементом) не должны перекрываться, самый простой способ добиться этого - установить auto_increment_increment & auto_increment_offset.

Мастер:

auto_increment_increment = 2
autoincrement-offset = 1

Скопировать еще предстоит объединить:

auto_increment_increment = 2
auto_increment_offset = 2

Теперь все «недавно» вставленные записи с ключом автоинкремента гарантированно не будут перекрываться.Копирование данных из одного в другое (то есть: с определенным ключом / идентификатором) просто вставит этот идентификатор, упрощая копирование «автономных» данных, таких как заказы, в другую базу данных.Однако, если вы изменяете данные с теми же первичными ключами (копируйте продукт № 1 с мастера на копию, изменяете продукт № 1 при копировании, а затем пытаетесь скопировать продукт № 1 обратно на мастер как явно отличающийся от него).product), тогда вам придется написать умеренно сложный скрипт импорта, который знает все о ваших первичных ключах и отношениях и переназначает их.Возможно, вы можете сделать это без особых сценариев, если это примерно 2 базы данных на 1 сервере, с тщательно созданными временными таблицами и т. Д., Но не существует готового к использованию метода «забей и забудь».

0 голосов
/ 05 октября 2010

Вы можете временно отключить проверку внешнего ключа во время копирования.

Или вам нужно скопировать их, сохранив все ограничения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...