Концептуально, как работает репликация Master-Master?
Я предполагаю, что столкновения будут обычным явлением, которое необходимо как-то разрешить.
Концептуально, как работает репликация Master-Master?
Я предполагаю, что столкновения будут обычным явлением, которое необходимо как-то разрешить.
Репликация «мастер-мастер» (в более общем смысле — репликация с несколькими мастерами) концептуально работает, предполагая, что конфликты не являются обычным явлением, и только сохраняет всю систему слабо согласованной, асинхронно обновляет связь между мастерами, что в конечном итоге нарушает основные свойства ACID.
Как правильно предположил Кармбрестер (и независимо от MySQL), генерация ключей является важной стратегией смягчения последствий конфликтов (например, при создании одного и того же идентификатора). Кроме того, я думаю, что ключ в том, чтобы думать о конфликтах в системах с несколькими мастерами как о конфликтах в оптимистичных моделях блокировки. Оба варианта успешны, потому что оставшиеся риски, как правило, невелики по сравнению с выигрышами.
Однако могут возникать конфликты (как вы предполагаете), и разные поставщики предлагают разные стратегии. Например, Oracle позволяет администраторам баз данных выбирать из ряда основ разрешения конфликтов (отметка времени, сходство и т. д.) и последующих действий (регистрация ошибки в очереди и т. д.). Дополнительные сведения об Oracle см. на странице http://www.orafaq.com/wiki/Advanced_Replication_FAQ#What_happens_if_two_or_more_sites_change_the_same_data.3F
Контекст важен, но вот немного информации о том, как MySql обрабатывает сценарий...
Бинлог с каждого мастера читается и выполняется на другом мастере. Смещение автоинкремента настраивается таким образом, чтобы первичные ключи не конфликтовали, т. е. один из мастеров будет настроен со смещением, в результате которого во время автоинкремента будут использоваться четные числа, в то время как другой мастер будет настроен на использование нечетных чисел во время автоинкремента. -приращение.
Для репликации MySql Clustering, которую также можно настроить с двумя мастерами, вы можете настроить способ обработки конфликтов, как описано в эта ссылка.