Назад | Перейти на главную страницу

Mysql replicate-rewrite-db не работает

Целый день был "рабом" в этом вопросе.

У меня есть настройка «главный / подчиненный», которая работает, но когда я пытаюсь выполнить репликацию на другое имя базы данных на подчиненном устройстве, это не удается. Вот как выглядит my.cnf:

server-id=101
report-host=Slave01

replicate_do_db='DB1'
replicate-rewrite-db=DB1->DB2

replicate-ignore-table=DB2.SOME_TABLE_NAME

Если я уберу строку replicate-rewrite-db, она будет работать отлично и реплицирует базу данных DB1 с ведущего на ведомое устройство. Положение главного журнала, которое я использую на ведомом устройстве, находится после вызова CREATE DATABASE DB1 на ведущем устройстве. После этой позиции журнала создаются таблицы и импортируются данные на главном сервере. Я не настраиваю и не запускаю подчиненное устройство до тех пор, пока не создам базу данных DB2.

Любые идеи?

Обновление: видел это в журнале ошибок mysql:

120531 15:48:19 [Note] Slave I/O thread: connected to master 'slave_user@master_server:3306',  replication started in log 'mysql-bin.000001' at position 107
120531 15:48:20 [ERROR] Slave: Error 'Unknown database 'DB1'' on query. Default database: 'DB1'. Query: 'CREATE TABLE `ANOTHER_TABLE` (

Я получил подсказку в комментарии, но с тех пор пользователь удалил ее.

Уловка состоит в том, чтобы не использовать replicate-do-db, а использовать только replicate-rewrite-db:

#replicate_do_db='DB1'
replicate-rewrite-db=DB1->DB2

Комментирование строки replicate_do_db в my.cnf исправило это для меня.

Спасибо таинственному пользователю, который указал мне правильное направление, кем бы вы ни были.

Важное примечание: необходимо добавить имя переписанной базы данных. Добавьте эту строку в свой my.cnf:

replicate-do-db=DB2

Итак, ваш конфигурационный файл должен наконец быть таким:

server-id=101
report-host=Slave01

replicate_do_db       =  DB2
replicate-rewrite-db  =  DB1->DB2

replicate-ignore-table=DB2.SOME_TABLE_NAME

Я протестировал и он работает