идея в том, что мастер не пишет create index в бинлог, пока не закончит. Если пришел drop index, drop table - то создание индекса отменяется и в бинлог вообще ничего не пишется. Уникальный индекс - на мастере уже есть уникальный индекс, т.е. на слейв не пройдет что-то, что может создать там нежданный дубликат. Изменение типа колонки - по сути что происходит, если индекс создается в этот момент? Отмена создания индекса, изменение схемы и создание заново? Т.е. в бинлог пойдет изменение колонки - и только потом создание индекса по завершению его создания на мастере.
ну ты действительно предлагаешь довольно наивную модель. на простых случаях кажется, что она рабочая. но всё сложнее. drop index, drop table параллельно create index-у не будут выполнены из-за metadata locks. то есть, если в бинлоге есть create index, а потом drop, то они на мастере выполнились, это важный инвариант. теперь слейв выполняет create index "в бэкграунде". и встречает drop table. это значит, что мастер его выполнил, и слейву нужно выполнить тоже. что должен делать слейв в этом случае?
Обсуждают сегодня