Новое в масштабировании MySQL - как иметь 2 основных сервера записи?

Из того, что я узнал, сервер MySQL MASTER может как читать, так и писать. Верный?

Мой вопрос: предположим, у вас есть 2 основных сервера записи MySQL (и много подчиненных серверов чтения).

Как решить проблему автоинкремента? Как вы его синхронизируете? Предположим, вы пишете как на Master1, так и на Master2... как вы будете синхронизировать их, чтобы автоинкремент был последовательным? Может кто-нибудь объяснить решение этой проблемы в простом смысле.


person TIMEX    schedule 04.11.2009    source источник
comment
@alex - на самом деле это не вопрос программирования   -  person martin clayton    schedule 04.11.2009


Ответы (2)


Вы настраиваете сервер № 1 для использования нечетных значений автоматического увеличения, а сервер № 2 — для использования четных значений.

# server 1 
auto_increment_increment 2                                
auto_increment_offset    1   

# server 2
auto_increment_increment 2                                
auto_increment_offset    2

Существует инструкция по Linux, в которой описан процесс. См. также документацию MySQL по этому вопросу.

person martin clayton    schedule 04.11.2009
comment
Но что, если один сервер умрет? Тогда... оставшийся сервер будет продолжать увеличиваться нечетно? - person TIMEX; 04.11.2009
comment
Да, именно так он и настроен. Вы бы получили пробелы. - person martin clayton; 04.11.2009
comment
Может быть. Зависит от того, как вы используете значения автоинкремента. Если вам нужно, чтобы они монотонно увеличивались без пробелов, у вас есть проблема. Если это уникальные внутренние идентификаторы в системе, что обычно и бывает, то пробелы не имеют большого значения. - person martin clayton; 04.11.2009

Пробелы должны быть в порядке, если ваша система не нуждается в этом. Как только вы достигнете предела INT или BIGINT, вы должны быть готовы к настройке хранилища данных, чтобы вы могли выгрузить свои старые данные и подготовиться к возврату к базовым значениям смещения. В приложении с интенсивным записью вам нужно быть готовым и иметь возможность выгрузить старые данные как можно скорее.

person rmartinez    schedule 04.08.2010