Записки ИТ-диверсанта: Как “сломать” MySQL-репликацию

Рубрика: MySQL | 18 September 2007, 08:44 | Vadim Voituk

… или пособие о том, как не нужно делать :)

Предположим у нас есть MySQL master-slave репликация, в которой мастер работает на MySQL 4.0, а все слейвы на MySQL 4.1 и выше.

В принципе нормальная ситуация, т.к. в подобных системах мастер появляется первым, и возможно на тот момент версии MySQL 4.1 ещё попросту небыло.

Теперь выполняем примитивный запрос:
[sql]mysql> CREATE TABLE mytable (id int unsigned not null default 0 auto_increment primary key)[/sql]
В результате на всех слей-серверах “падает” репликация.

Почему?
Дело в том, что начиная с версии 4.1, дабы стать ближе к стандартам SQL, было запрещено default-значение для auto-increment-оно поля.
В результате на мастере запрос успешно выполняется, пишется в binlog, из которого он попадает на слейв-сервера, которые не могут его выполнить.

Посему правильно писать:
[sql]mysql> CREATE TABLE mytable (id int unsigned auto_increment primary key)[/sql]

Комментариев: 3

3 Responses to “Записки ИТ-диверсанта: Как “сломать” MySQL-репликацию”

Комментарии:

  1. Скакунов Александр

    Вбил несколько твоих постов по MySQL в гугл-группу UA MySQL, если ты не против.

  2. vadim

    C чего бы мне быть против? Тем более ссылки на оригиналы сохранены :)

  3. Скакунов Александр

    Ну дык реклама на братский сайт – это всегда хорошо :)

Leave a Reply