Как работает репликация Мастер-Мастер? - PullRequest
2 голосов
/ 10 января 2011

Концептуально, как работает репликация Master-Master?

Я предполагаю, что коллизии будут обычным явлением, которое нужно как-то разрешать.

Ответы [ 2 ]

2 голосов
/ 10 января 2011

Репликация мастер-мастер (в более общем смысле - репликация с несколькими хозяевами) концептуально работает, предполагая, что конфликты не являются общими, и лишь поддерживая непротиворечивость всей системы, асинхронно обновляя связь между мастерами, что в итоге нарушает основные свойства ACID.

Как правильно предположил carmbrester (и не зависит от MySQL), генерация ключей является важной стратегией предотвращения конфликтов (например, генерируется тот же идентификатор).Кроме того, я думаю, что ключевым является думать о конфликтах в системах с несколькими хозяевами как о конфликтах в оптимистических моделях блокировок.И то, и другое успешно, потому что оставшиеся риски, как правило, невелики по сравнению с выплатами.

Однако могут возникнуть конфликты (как вы предлагаете), и разные поставщики предлагают разные стратегии.Например, Oracle позволяет администраторам баз данных выбирать из целого ряда основ разрешения конфликтов (отметка времени, сходство и т. Д.) И последующих действий (регистрация ошибки в очереди и т. Д.).Подробнее об Oracle смотрите по адресу http://www.orafaq.com/wiki/Advanced_Replication_FAQ#What_happens_if_two_or_more_sites_change_the_same_data.3F

0 голосов
/ 10 января 2011

Контекст важен, но здесь есть немного информации о том, как MySql обрабатывает сценарий ...

Бинлог от каждого мастера читается и выполняется на другом мастере.Смещение автоинкремента настроено таким образом, чтобы первичные ключи не конфликтовали, т. Е. Один из мастеров был бы настроен со смещением, в результате чего четные числа используются во время автоинкремента, тогда как другой мастер будет настроен на использование нечетных чисел во время авто-increment.

Для репликации MySql Clustering, которая также может быть настроена с двумя мастерами, вы можете настроить способ обработки конфликтов, как описано в этой ссылке .

...