Я довольно много читал об этом, и я все еще не уверен, где я нахожусь.
Могу ли я получить коллизии (а затем и повреждение) базы данных с двумя мастерами, получающими записи?
Теперь, когда MySQL (я использую 5.1 в Debian и Ubuntu) имеет автоинкремент, можно ли этого избежать и подойдет ли он для производства?
Я посмотрел на MMM для включения только одного мастера для записи, но у него есть свои проблемы, и моя топология действительно ориентирована на то, чтобы два мастера получали записи.
Я не уверен, что верю в это: http://www.neocodesoftware.com/replication/
Могут ли какие-нибудь эксперты по MySQL помочь? Огромное спасибо.
--РЕДАКТИРОВАТЬ--
Половина материалов, которые я читал, или люди, которых я спрашиваю, говорят, что вы все равно получите искажение даже при использовании автоинкремента ... а другая половина говорит, что нет! Может кто-нибудь, у кого есть загруженные сайты, уточнить?
Если вы не примете соответствующих мер, это станет реальной проблемой. Вкратце, ваша конфигурация на каждом сервере требует установки двух значений.
auto_increment_offset
должен быть установлен таким образом, чтобы каждый мастер имел уникальное значение, обычно 1 для первого, 2 для второго и т. д.
auto_increment_increment
- это размер шага приращения, который должен быть не меньше количества мастеров в цепочке. например Для простой настройки двух серверов значение будет 2 (или больше).
Просто невозможно заставить его работать надежно без большого количества настраиваемого кода. Проблема в том, что асинхронная репликация будет приводить к коллизиям и конфликтам, которые необходимо разумно разрешать с помощью грамотно написанных и безупречно реализованных алгоритмов. У тебя этого не будет. Использовать Настройка кластера MySQL вместо этого, если вам нужны операции с несколькими мастерами и вы можете справиться с ограничениями, которые они накладывают.