2010-10-04 15 views
0

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

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

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

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

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

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

ответ

0

Вы можете временно указать disable foreign key checks во время копирования.

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

+0

Мне нужно скопировать их, удерживая удерживающие устройства на месте. Мне просто нужно вставить все из подчиненного устройства в мастер, как будто это свежие данные. –

+0

Прочитав ответ Wrikken, я понимаю, что, вероятно, неправильно истолковал проблему. Я думаю, он получил ваш ответ. –

0

Если у вас есть 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 обратно в мастер как совершенно другой продукт), затем вам придется написать умеренно сложный сценарий импорта, который знает все о вас первичные ключи & отношений и переназначает их. Возможно, вы можете сделать это без большого сценария, если это около 2 баз данных на 1 сервере, с тщательно созданными временными таблицами и т. Д., Но нет способа «пожара & забыть» из коробки, которую я знаю.

Смежные вопросы