2012-02-10 7 views
0

Я студент, и я хотел бы повторить в режиме реального времени запись в таблице A и B. ТаблицыMysql Двунаправленных репликации

таблицы A (article_id, article_content) в базе данных A

таблица B (id, article) в базе данных B

Я хочу, чтобы они имели одинаковые записи все время. Если в таблице A есть новая запись, я хочу, чтобы она была добавлена ​​в таблицу B в реальном времени (с низкой задержкой), но я не могу сделать это сразу, потому что поля не совпадают.

Так я думал о репликации обе таблицы в каждой базе данных

таблицы А в базе данных реплицированных в таблице AB в базе данных B таблицы B в базе данных B реплицируются в таблице AB в базе данных A

, а затем добавить некоторые триггеры для таблицы AB для правильной корректировки таблицы A и таблицы B.

Это хорошее решение? спасибо

+0

Я хотел бы предложить изменение одного из приложений, так что они оба записи в одной таблице. В качестве альтернативы вы можете заменить одну из таблиц на другую таблицу. Какую версию MySQL вы используете и являетесь ли они базами данных на одном сервере? Каковы структуры таблиц? – nnichols

+0

mysql 5.0.4 +, а базы данных не являются автоматически на одном сервере. – adieuuu

+0

Я думаю, вам нужно дополнительно объяснить свои настройки, чтобы получить лучший совет. Репликация звучит как излишество для меня. Каковы уровни трафика? Каковы структуры базы данных/таблиц? Можете ли вы использовать объединенные таблицы (используйте «SHOW ENGINES», чтобы узнать, доступен ли FEDERATED)? – nnichols

ответ

0

Я бы предложил master db для записи, а затем настроить slaves для клонирования мастера. В противном случае у вас будет адское управление ключами/внешними ключами.

+0

Спасибо. Я не эксперт с репликацией atm. Я отредактировал сообщение, возможно, теперь это проще понять. – adieuuu

+0

Дело в том, что два разных приложения записываются в таблицы A и B ... – adieuuu

0

Ну для начала, если таблицы различны, что не репликации ....

Если вы идете вниз маршрут вы предлагаете, имея в виду триггеры являются частью транзакции.

DatabaseA имеет TABLEA и TableBCopy DatabaseB имеет TableB и TableACopy

Так TableA реплицируется TableACopy и TableB реплицируется TableBCopy Trigger От TableBCopy изменяет TABLEA, который реплицируется в TableACopy, который вызывает изменения в TableB, который размножается в TableBCopy .... в то время как Trigger от TableACopy изменяет TableB, который реплицируется в TableBCopy, который вызывает изменения в TableA, который реплицируется в TableACopy ...

Какой бит выше звучит как хорошая идея?

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

Как предложил @Ian Вуд, мне думает ....

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