Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день.
Как водится, простейший путь настроить репликацию на слейве - указать нужные БД в опциях replicate-do-db. Так многие делают и все работает. Допустим к тому же, что никаких опций уровня *-table на слейве нет.
Однако, читая документацию здесь http://dev.mysql.com/doc/refman/5.5/en/ … tions.html
и здесь http://dev.mysql.com/doc/refman/5.5/en/ … tions.html
можно сделать противоречивые выводы, а именно:
С одной стороны, говорится, что replicate-do-db по алгоритму фильтрации аналогична binlog-do-db. Однако приведенные детальные алгоритмы показывают, что binlog-do-db проигнорирует несовпадающую БД. Для replicate-do-db же мы идем дальше, на алгоритм разрешения опций уровня таблиц (*-table).
И дальше мы имеем интересную вещь: блок-схема и пояснение говорят нам, что если нет никаких опций уровня таблиц, то запрос будет выполнен! Это уже противоречит утверждению про похожесть на binlog-do-db.
Однако, на практике (mysql 5.5, мастер: binlog-format=mixed) все действительно похоже на binlog-do-db и НЕ похоже на описанный в доках алгоритм, а именно: при отсутствии опций *-table и несовпадении дефолтной БД ни с одной из БД списка replicate-do-db, запрос (например, на вставку записи) не выполняется на слейве!
Объясните мне непонятливому, почему так?
Отредактированно shutdown (05.03.2012 11:29:01)
Неактивен
Здравствуйте.
Если честно, не понял, что Вас смущает. Всё работает строго по документации.
Если включена binlog-do-db, то в двоичный журнал на мастере попадают только
те запросы, которые были выполнены с базой по умолчанию среди выбранных.
Если включена replicate-do-db, то из приехавшего двоичного журнала будут вы-
полнены только те запросы, в которых база по умолчанию была среди выбранных.
Неактивен
Первое, что смущает, поведение слейва.
Смотрим http://dev.mysql.com/doc/refman/5.5/en/ … ions.html, словесное описание блок-схемы внизу.
При наших условиях (есть опции replicate-do-db, но ни одна из них не подходит под дефолтовую базу, и нет опций replicate-ignore-db) мы попадаем на шаг 3 - проверка *-table опций.
Хорошо, смотрим сюда: http://dev.mysql.com/doc/refman/5.5/en/ … ions.html.
Можно не смотреть блок-схему, достаточно прочитать: "Having reached this point, if there are no table options, the slave simply executes all events." (блок-схема вполне с этим согласуется). Это в точности, что в моих настройках - опций *-table у меня нет. Следовательно, как написано в вышеприведенном фрагменте документации, запрос должен быть выполнен. Но он не выполняется!
У меня впечатление, что я стучусь в стену рядом с дверью, но покажите мне эту дверь :))
Неактивен
Блоксхема неправильная, разбили плохо в документации. Если запрос не попадает
под хотя бы одну опцию --replicate-do (при наличии хотя бы одной), то он не выпол-
няется.
Неактивен
Хорошо, уже какая-то ясность. А можно надеяться, что документация будет приведена в соответствие с действующей логикой?
PS вторую часть вопроса из заглавного поста удаляю, там все верно на самом деле.
Неактивен
Оформите ошибку на bugs.mysql.com?
Неактивен
Неактивен