![]() |
|
Задавайте вопросы, мы ответим
Вы не зашли.
Создала конфиги на мастере и слайве. Сначала "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 лет назад.
Неактивен