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

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

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


person frooyo    schedule 09.01.2011    source источник
comment
Файл, база данных, что угодно. Концепция master-master остается неизменной независимо от контекста.   -  person frooyo    schedule 10.01.2011
comment
@user401839: Да, концепция та же, но вы спросили, как это работает, и это будет зависеть от контекста. Концепция слишком расплывчата, чтобы давать конкретику без дополнительной информации.   -  person skaffman    schedule 10.01.2011
comment
@skaffman, я обновил вопрос, чтобы сделать его более широким. это помогает?   -  person frooyo    schedule 10.01.2011


Ответы (2)


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

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

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

person kvista    schedule 09.01.2011

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

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

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

person carmbrester    schedule 09.01.2011