2013-10-04 3 views
1

У меня есть база данных на двух разных серверах.MYSQL: лучший способ экспортировать/импортировать данные для предотвращения согласованности таблиц

Database "store" on server A и ту же базу данных "store" on server B

"магазин" база данных имеет следующие две таблицы:

+-----------------------+   +---------------------+ 
:  jobs    :   :  votes   : 
+.......................+   +---------------------+ 
:job_id  :primary key: --------> : job_id : primary key: (Linked to jobs->job_id) 
+-----------+...........+   +---------------------+ 
:  title    :   :  up    : 
+-----------------------+   +---------------------+ 
: description   :   :  down   : 
+-----------------------+   +---------------------+ 

Таблица заданий и голоса связаны (связаны) с помощью foreign key.

База данных "магазин" на сервер А

таблица jobs имеет 2300 строк, у которых job_id(primary key) старт от 1 до 2300

таблица votes имеет соответствующие строки

База данных "магазин" на сервере B

стол jobs имеет 120 0 строк, у которых job_id(primary key) начала от 1 до 1200

таблицы votes имеет соответствующие строки

Проблема:

Я хочу импортировать данные for server "A" database to server "B" таким образом, чтобы строки (запись) на сервере A's таблица базы данных вставлена ​​в сервер B's таблица базы данных с приращением B's таблица "jobs" job_id от 1200 дальше. И соответствующая вставка в B's таблица votes с новыми job_id рабочих мест сервера B job_id.

Каковы возможные безопасные способы для обеспечения такого импорта данных?

Я могу просто export SQL from phpMyAdim from server A, а затем import to server B's phpMyAdmin. Но я боюсь потерять согласованность записей.

+0

Сделайте резервную копию. Тестирование операций с резервными копиями. Если все в порядке, то делайте то же самое на производстве. – BlitZ

+0

Итак, вы хотите добавить элементы от сервера A к серверу B, но вам не обязательно заботиться о значениях автоинкремента (кроме элементов из A необходимо иметь значения автоинкремента выше, чем в DB B, так что нет идентификатора столкновения)? И, конечно же, вы должны поддерживать отношения предметов, которые были перенесены? –

+0

@Mike Brant Элементы с сервера A вставлены в B с новым идентификатором, назначенным B –

ответ

1

У вас есть несколько потенциальных подходов. Который вы используете, может зависеть от того, является ли это одноразовой вещью или чем-то, что вы планируете делать несколько раз.

Очень простой подход состоит в том, чтобы добавить, скажем 10000 ко всем значениям автоинкремента в обеих таблицах в БД А, а затем просто создать и SQL-скрипт, который может импортировать эти значения в БД Б. У вас будет пробел в последовательность автоинкремента, но это действительно должно быть проблемой. (Вы, очевидно, могли бы изменить этот подход, чтобы добавить точное количество строк для каждой таблицы в БД к значениям автоинкремента в таблицах БД, если вы хотели предотвратить такой разрыв).

Другой подход может заключаться в том, чтобы написать сценарий для этой миграции для вас. С помощью этого подхода вы можете прочитать данные из БД А и вставить вставки в соединениях в ББ Б, чтобы обеспечить соблюдение отношений, в то же время позволяя БД B автоматически устанавливать значения автоинкремента.

Еще одним подходом может быть импорт данных из БД А в отдельные таблицы в БД Б, затем выбор данных из новых таблиц и вставка в существующие таблицы через соединение.

+0

. Звучит неплохо, спасибо за повторное воспроизведение, ожидая других предложений экспертов –

1

Возможно, вы захотите рассмотреть вопрос о UUID. Используя этот подход, ваш ключ будет уникальным ключом для всех серверов. Это немного больше работы на лицевой стороне, чтобы этот подход работал, но как только вы его используете, объединение баз данных не является проблемой.

Get the generated uuid after insert php

+0

, поэтому вы говорите, что хотите воспользоваться PHP или другим скриптом, чтобы вставить данные от A до B –

+0

Фактически, я говорю, что если вы создаете базу данных для использования UUID, объединение двух баз данных - это тривиальная работа. – Thornuko

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