Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Изменение имени базы при репликации / 5 сообщений из 5, страница 1 из 1
30.01.2014, 15:35:18
    #38543802
archer.developer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение имени базы при репликации
Доброго времени суток. Столкнулся с такой проблемой:
Есть mysql сервер, на котором есть 2 базы dictionary и crm. Настроил репликацию таблиц из первой базы во вторую. Вот данные из my.cnf:

[mysqld]
server-id = 1
report-host = master-is-slave-host
log_bin= /var/log/mysql/mysql-bin.log
relay-log = /var/log/mysql/mysql-relay.log
replicate-same-server-id = 1

binlog_do_db= dictionary

replicate-rewrite-db=dictionary->crm

replicate-do-table=crm.continent

Репликация работает и при выполнении вставок в таблицу continent базы dictionary записи реплицируются в эту таблицу в базе crm. Но в случае если запрос на вставку содержит явно имя базы, то репликация не происходит, хотя бинарный лог и для master и для slave сдвигается. Тоесть запрос просто игнорируется. Пример:

insert into continent (title) value ('test'); - реплицируется
insert into dictionary.continent (title) value ('test'); - не реплицируется

На сколько я понял из мануалов, причина в том, что replicate-rewrite-db игнорируется для кроссбазовых запросов.
Можно ли как либо указать mysql, что нужно транслировать имя базы в запросе, чтобы оба приведенных запроса реплицировались?
Заранее спасибо!
...
Рейтинг: 0 / 0
30.01.2014, 16:57:47
    #38543933
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение имени базы при репликации
Настроил репликацию таблиц из первой базы во вторую.
Неправда. Вы настроили репликацию в mysql по хабрахабру.
А в нормальной литературе описываются опасности использования фильтров репликации, на которые вы сейчас попали.

Теперь попробуйте выкинуть replicate-do-table. Если не заработает, потом вообще все варианты do выкинуть, а оставить только rewrite.
...
Рейтинг: 0 / 0
30.01.2014, 17:08:43
    #38543950
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение имени базы при репликации
авторНа сколько я понял из мануалов, причина в том, что replicate-rewrite-db игнорируется для кроссбазовых запросов.
Решил перечитать этот момент.
Да, похоже именно такой сценарий вообще никак не получится, если пользоваться только средствами самого сервера mysql.

Но раз вы настроили репликацию, значит вы контролируете оба сервера. Тут уже есть простор для маневра.
На подчиненном сервере те другие приложения не могут "подвинуться" и освободить первоначальное имя базы?
В таком случае вы сможете, например, создать таблицы для всех баз с движком BLACKHOLE и затаскивать все изменения, но накатываться будут только нужные изменения на тех таблицах которые не BLACKHOLE. Тут уже вообще не нужно использовать все варианты фильтров репликации и, соответственно, любые сделанные изменения обязательно применятся.
...
Рейтинг: 0 / 0
30.01.2014, 17:16:46
    #38543959
archer.developer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение имени базы при репликации
авторТеперь попробуйте выкинуть replicate-do-table. Если не заработает, потом вообще все варианты do выкинуть, а оставить только rewrite

Спасибо - попробовал, но как и ожидалось это привело к ошибке репликации при выполнении инсерта:
Error 'Duplicate entry '19' for key 'PRIMARY'' on query. Default database: 'crm'. Query: 'insert into `dictionary`.`currency` (title) value ('12300002')'

Судя по всему slave при получении запроса теперь выполнил его (а не проигнорировал по фильтру как раньше), однако он все равно обратился к базе dictionary, что привело к ошибке.

авторНа подчиненном сервере те другие приложения не могут "подвинуться" и освободить первоначальное имя базы?

Увы нет. Идея была в том, чтобы держать все справочники в отдельной базе и реплицировать их частично в базы других приложений (для упрощения запросов и возможности сделать ключи на справочники).

Все равно спасибо за ответ, буду искать обходные решения
...
Рейтинг: 0 / 0
30.01.2014, 17:25:16
    #38543968
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение имени базы при репликации
archer.developer, ну подумайте еще над тем как избежать использования подобных запросов. обычно программы так не делают и разработчики mysql тоже ориентировались на этот факт.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Изменение имени базы при репликации / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]