Задавайте вопросы, мы ответим
Вы не зашли.
Создала конфиги на мастере и слайве. Сначала "bin-log-db" был проставлен на ту базу, что нужно было реплицировать, когда с тест машины на боевой сервер кидала дампы, всё было замечательно, но всё, что генерировалось скриптами, просто напросто игнорировалось. Копалась, копалась, раскопала, что проблема, в том, что я не использую "USE", все запросы напрямую с указанием баз.таблиц, закомментировала на мастере этот пункт, и данные побежали как и должны. Но на слайве проблема осталась. Так как там всё настроено через "replicate-do-db = db1". И вот теперь проблема, если я уберу это, то если я верно понимаю не только изменения в базе "db1" будут перениматься, но и вообще все изменения по всему серверу, включая создание новых баз и добавление юзер, ведь эти данные тоже в технической базе лежат. Как тут быть?
Отредактированно animegirl (20.11.2013 00:22:29)
Неактивен
Сейчас покопала мануал, не охото с уже более менее налаженной системой экспериментировать, можете так сказать атрибут "replicate-ignore-db" поможет, если туда запихнуть все ДБ, кроме реплицируемой?
Неактивен
replicate-ignore-db может помочь. Вообще говоря, опция replicate-do-db достаточно опасная, так как запросы могут не попадать по тем или иным причинам.
Неактивен
rgbeast написал:
replicate-ignore-db может помочь. Вообще говоря, опция replicate-do-db достаточно опасная, так как запросы могут не попадать по тем или иным причинам.
А можно по подробней?
Неактивен
См. в документации http://dev.mysql.com/doc/refman/5.0/en/ … cate-do-db
replicate-do-db проверяет только текущую базу
Можно применить, например, replicate-wild-do-table - он работает на уровне таблиц (не требует USE)
http://dev.mysql.com/doc/refman/5.0/en/ … d-do-table
Все это будет работать неправильно, если будет хотя бы один апдейт к двум таблицам из разных баз.
Неактивен
rgbeast написал:
См. в документации http://dev.mysql.com/doc/refman/5.0/en/ … cate-do-db
replicate-do-db проверяет только текущую базу
Можно применить, например, replicate-wild-do-table - он работает на уровне таблиц (не требует USE)
http://dev.mysql.com/doc/refman/5.0/en/ … d-do-table
Все это будет работать неправильно, если будет хотя бы один апдейт к двум таблицам из разных баз.
В последнем варианте есть большая вероятность, что добавив таблицу на мастере, и забыв добавить её в список нс слайве, всё развалится, верно
Но вопрос насколько сильно, то есть, там всё пойдёт в тартарары, или же встанет и будет ждать добавления в кофниг, а после добавления и перезагрузки, просто спокойно продолжить репликацию?
Неактивен
Не обязательно добавлять все таблицы. Для replicate-wild-do-table можно использовать db1.%
Неактивен
Круто, то есть вот так будет верно "replicate-wild-do-table=db1.%"?
Или ещё какие-то ошибки в написание допустила?
Неактивен
Должно сработать
Неактивен
rgbeast написал:
Должно сработать
По началу был какой-то дикий глюк, так как удалила базу хирургическим методом удаления папки, а репликация орала, что в пустой базе уже есть таблица с таким именем, после некоторых акробатических этюдов, из бэкапа реплика была восстановлена, через пма были выпилены лишние базы, mysql остановлен, опять так же хирургический выпилены все логи и мастер конфиги, и после вторичного запуска и запуска реплики всё пошло, спасибо за хорошую команду. Постараюсь усвоить правило, что нельзя делать команды меж баз.... пока ОБЕ(все если больше), из них не будут так же добавлены в эту вариаблу, верно?
Неактивен
Да, и еще нельзя создавать промежуточные временные таблицы в базе tmp, если база tmp не реплицируется.
Неактивен
rgbeast написал:
Да, и еще нельзя создавать промежуточные временные таблицы в базе tmp, если база tmp не реплицируется.
Хммм, так-с, за запросы пока что отвечаю тоже я, теперь вопрос, если я сама ничего не знаю про такие таблицы, может ли сервер создавать их сам при сложных запросах?
Неактивен
Сервер сам не создает таблицы, которые имеют название и относятся к какой-либо базе. Но программист может со временем забыть и использовать какое-нибудь хитрое решение, от которого разваливается вся репликация.
Неактивен
rgbeast написал:
Сервер сам не создает таблицы, которые имеют название и относятся к какой-либо базе. Но программист может со временем забыть и использовать какое-нибудь хитрое решение, от которого разваливается вся репликация.
Надо будет не забыть приемнику на своём посту сделать список костылей, равновесие которых нельзя нарушать
Неактивен
Все пытаюсь намекнуть на то, что надо отказываться от решений, которые порождают эту и подобные темы и стремиться сделать так, чтобы список для преемника был пустым.
Неактивен
rgbeast написал:
Все пытаюсь намекнуть на то, что надо отказываться от решений, которые порождают эту и подобные темы и стремиться сделать так, чтобы список для преемника был пустым.
Для этого надо приложить слишком много усилий и временных затрат, а работая человеком-оркестром на начальном этапе проекта, на это нету времени и желания. Всё равно, всё будет иметь версию 2,3,4 итп. . И вот по мере того, как меня будут разгружать и будут делать новые версии скриптов/модулей движка так и будем переходить на более правильную архитектуру. На данный момент задачи только на безопасность являются критичными.
Неактивен
Архитектуру бывает трудно исправить потом. Монти предпринимает дикие усилия, чтобы в MariaDB исправить архитектурные ошибки, которые он сделал 20 лет назад.
Неактивен