Выборочная репликация базы

rubalex

Новичок
Выборочная репликация базы

требуется репликация не всех таблиц в базе а выборочно.
это возможно?
 

rubalex

Новичок
просто добавить эту строчку в my.cnf ?????
replicate-ignore-table=database_name.table_name
 

Апельсин

Оранжевое создание
ну если тебе нужно реплицировать все, кроме этой таблицы - да, для этого к остальным опциям, использующимися для настройки репликации, надо добавить эту строчку.
 

rubalex

Новичок
спасибо, пойду пробовать

-~{}~ 16.03.04 15:51:

Запустил репликацию с игнорированием одной таблицы и все равно в логах фижу команды SQL применимые к этой таблице. Получается что в логи все равно пишется и трафик качается??? И в чем смысл игнорирвоания? в том что данные из логов не попадут в SLAVE базу? У меня задача стоит не перекачивать при репликации не нужные данные с сервера на сервер. Подскажите
 

Апельсин

Оранжевое создание
> в том что данные из логов не попадут в SLAVE базу?

да

> У меня задача стоит не перекачивать при репликации не нужные данные с сервера на сервер.

- Помести нужные таблицы в отдельную базу и используй опции binlog-do-db.
- Можешь попробовать использовать --slave-compressed-protocol.
- Что бы не нужные запросы не писались в логи используй SET SQL_BIN_LOG=0/1, тогда запросы поступающие от данного клиента (соединения) будут/не будут писаться в логи. Правда в этом случае нужно что бы у этого пользователя была привилегия SUPER
 

rubalex

Новичок
в отдельную базу помещать - это надо скрипты переделывать.

compressed на SLAVE добавил только пока не могу оценить уменьшило ли это трачик или нет.

SET SQL_BIN_LOG=0 на MASTER выполнил.
а лог на SLAVE пишется все равно
 

Апельсин

Оранжевое создание
> а лог на SLAVE пишется все равно

пишутся запросы выполненные тем же клиентом, который выполнил SET SQL_BIN_LOG=0 или вообще пишутся?
SET SQL_BIN_LOG=0 имеет эффект только для соединения, в котором была выполнена данная комманда.
 

rubalex

Новичок
пишутся вообще...
Вэб клиенты контачятся к основному серверу и работают там с базой. и вот эти запросы я вижу на слэйв сервере. и от них пухнет лог.
 

rubalex

Новичок
запутываемся
и так

на MASTER

есть пользователь USER - он указан в скрипте через который происходит конект к базе. с правами изменения данных в таблицах

есть пользователь REPL - создан чтобы SLAVE подсоединялся к MASTER для репликации с правом REPLIC..... (не помню точно)

есть root - со всеми правами.

От кого мне нужно запускать комаду на выключение логирования и кому дать право SUPER>?
 

Апельсин

Оранжевое создание
вот пользователь USER, который и выполняет SET SQL_BIN_LOG и должен иметь привилегию SUPER для выполнения данной комманды.
 

rubalex

Новичок
эту команду SET SQL_BIN_LOG нужно выполнить один раз при запуске сервера или каждый раз при конекте к базе

а если будет перезапуск сервера?
 

Апельсин

Оранжевое создание
rubalex, я же тебе писала что она воздействует только на соединение в котором она была выполнена.
Т.е. отключать запись в логи нужно перед всеми запросами, которые бы ты не хотел видеть в логах и включать перед теми, которые ты хочешь видеть.
 

rubalex

Новичок
Ошибка
ОШИБКА (mysql 4.0.12)
SQL-запрос :

SET SQL_BIN_LOG = 0

Ответ MySQL:


Unknown system variable 'SQL_BIN_LOG'

-~{}~ 17.03.04 17:37:

Автор оригинала: Апельсин

- Помести нужные таблицы в отдельную базу и используй опции binlog-do-db.
создал доп базу. поместил туда не нужные таблицы

SHOW MASTER STATUS
Binlog_do_db Binlog_ignore_db
main main_tmp

и все равно на мастере в логи пишутся SQL команды
типа
SELECT * FROM main_tmp.table_name


ПОЧЕМУ?
 

Апельсин

Оранжевое создание
> Unknown system variable 'SQL_BIN_LOG'

у меня на 4.0.18 нормально работает. Про 4.0.12 в связи с ее отсутствием ничего сказать не могу.

> ПОЧЕМУ?

а ты какие логи то смотришь??
если SELECT в логи пишуться, то это совсем другие логи, которые к репликации не имеют ни малейшего отношения ;)
 

rubalex

Новичок
Автор оригинала: Апельсин
> Unknown system variable 'SQL_BIN_LOG'
а ты какие логи то смотришь??
если SELECT в логи пишуться, то это совсем другие логи, которые к репликации не имеют ни малейшего отношения ;)
извини.
там не SELECT
а INSERT и UPDATE

я через скрипт контачусь к базе main.

а UPDATE (INSERT) Делаю путем полного указания main_tmp.table

может тут что не верно? нужно перед исполением скрипта конектица ко второй базе?
 

rubalex

Новичок
Решение заработало.
- выделение не нужных таблиц в отдельную базу
- запрет логирования этой базы

Спасибо за помощь

PS
SET SQL_BIN_LOG = 0
так и не заработало даже в 18 подверсии
 
Сверху