Копировать из рабов на мастера и наоборот
У меня здесь большая дилемма, и я не знал, как ее решить. Мне нужно скопировать несколько таблиц из MySQL DB (ведомых) в MySQL DB (master). Возьмите в качестве примера это:
MySQL DB (master)
table1
table2
table3
MySQL DB (slave1)
table1
table2
table3
MySQL DB (slave2)
table1
table2
table3
MySQL DB (master) должен реплицировать содержимое table1 все дни в MySQL DB (slave1, slave2), а MySQL DB (slave1, slave2) должен реплицировать содержимое table2 и table3 в MySQL DB (master) все дни. Таблицы идентичны, но данные могут меняться между ведущим и ведомым. У меня есть несколько вопросов по этому поводу:
- Кто-нибудь знает решение для этого? Я имею в виду, как я могу это реализовать?
- Хосты MySQL не находятся в одной сети, так как бороться с этой стороной?
- Поскольку таблицы имеют одинаковую структуру, что происходит, если, например, столбцы идентификаторов имеют одинаковые значения в основной таблице1 и в подчиненной таблице1? Будет перезаписан? Будет ли добавлена новая запись?
- Как сохранить целостность?
- Что произойдет, если ведомые устройства изменят запись, ранее синхронизированную с ведущим?
Хостами MySQL в основном являются Windows 7 PC
1 ответ
Репликация MySQL не предназначена для такой работы. Если вы разрешите записи на ведомых устройствах репликации, то ваша база данных, скорее всего, со временем станет несовместимой. Конечно, возможна репликация с несколькими хозяевами, но вы / ваше программное обеспечение должны быть очень осторожны, чтобы не делать ничего, что могло бы привести к будущим несоответствиям.
Я бы рекомендовал не делать этого. Либо придерживайтесь одного мастера, который получает все запросы, которые изменяют данные и отправляют запросы на чтение одному из подчиненных, либо настраивает MySQL Cluster.