Назад | Перейти на главную страницу

Репликация с ведомых устройств на ведущие и наоборот

У меня здесь большая дилема, и я не знаю, как ее решить. Мне нужно скопировать несколько таблиц из MySQL DB (подчиненных) в MySQL DB (master). Возьмем для примера следующее:

MySQL DB (master)
 table1
 table2
 table3

MySQL DB (slave1)
 table1
 table2
 table3

MySQL DB (slave2)
 table1
 table2
 table3

База данных MySQL (главная) должна реплицировать содержимое таблицы 1 все дни в базу данных MySQL (подчиненное устройство1, подчиненное устройство2), а БД MySQL (подчиненное устройство1, подчиненное устройство2) должно реплицировать содержимое таблицы 2 и таблицы 3 в БД MySQL (главное устройство) все дни. Таблицы идентичны, но данные могут меняться между ведущим и ведомым. У меня есть несколько вопросов по этому поводу:

  1. Кто-нибудь знает решение для этого? Я имею в виду, как я могу это реализовать?
  2. Хосты MySQL не находятся в одной сети, так что же делать с этой стороной?
  3. Поскольку таблицы имеют одинаковую структуру, что произойдет, если, например, столбец ID будет иметь одинаковые значения в главной таблице 1 и подчиненной таблице 1? Будет перезаписан? Будет добавлен новый рекорд?
  4. Как сохранить целостность?
  5. Что произойдет, если ведомые устройства изменят запись, которая ранее была синхронизирована с ведущим устройством?

Хосты MySQL - это в основном ПК с Windows 7

Репликация MySQL не предназначена для этого. Если вы разрешите запись на ведомые устройства репликации, то ваша база данных, скорее всего, со временем станет несогласованной. Конечно, репликация с несколькими мастерами возможна, но вы / ваше программное обеспечение должны быть очень осторожны, чтобы не делать ничего, что могло бы привести к будущим несоответствиям.

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