Как синхронизировать две базы данных MySQL, которые имеют разные схемы? - PullRequest
1 голос
/ 18 июля 2011

У меня есть две совершенно разные базы данных MySQL, и у них обеих есть свои собственные схемы пользовательских таблиц. Я хочу синхронизировать пользовательские таблицы (в режиме реального времени), поэтому, когда пользователь добавляется в одну из баз данных, другая должна обновляться соответственно. У меня вопрос, можно ли сделать такую ​​синхронизацию? Если да, каковы / являются эффективные способы / способ сделать это?

Ответы [ 2 ]

2 голосов
/ 18 июля 2011

Если вы хотите, чтобы это происходило в базе данных всякий раз, когда строка вставляется / обновляется, то это звучит как кандидат на TRIGGER .Это позволит вам написать код, чтобы при каждом изменении в таблице A вы автоматически вносили «зеркальное» изменение в таблицу B. Будьте осторожны, поскольку у вас будут триггеры, идущие в обоих направлениях, чтобы вы идентифицировалиспособ сказать, что вставка / обновление происходит из триггера другой таблицы, и вы не попадете в бесконечный цикл.

1 голос
/ 18 июля 2011

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

Есть другие способы сделать это, но это самый простой способ реализовать и очень эффективный.

Редактировать: Хорошо, есть другие способы сделать это: иметь обычное задание (cronjob или подобное), которое запрашивает одну таблицу на основе обновлений с момента последнего запроса и распространяет эти обновления во вторую таблицу;этот метод страдает от потенциальной задержки, однако.В качестве альтернативы, вы можете сделать что-то на основе триггеров для каждой пользовательской таблицы, но я бы рекомендовал избегать этого подхода, поскольку он вводит некоторые потенциально серьезные увеличения времени выполнения, в зависимости от того, как реализованы триггеры.Но я все же сказал бы, что самый простой способ - это изменить код обновления вашей пользовательской таблицы, чтобы изменить обе таблицы вместо одной.

...