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

Ведомый MySQL присоединяет имя производственной базы данных к новым представлениям

У меня есть подчиненная база данных, которая носит другое имя, чем ее производственный аналог. (Мы используем replicate-rewrite-db вариант.)

Когда я запускаю mysqldump с ведомого устройства (что я делаю для создания копий для разработчиков), к двум представлениям базы данных прикреплено имя базы данных. Я не могу использовать файл дампа для создания другой копии, не редактируя ее вручную.

Если я запустил тот же mysqldump из производственной копии, все будет чисто. Так что по какой-то причине раб создал эти два представления неправильно. (Остальные четыре представления были созданы до того, как была установлена ​​репликация, что, как мне кажется, объясняет разницу. Я подтвердил, что репликация выполняется синхронно.)

Фрагмент mysqldump с ведомого устройства:

/*!50001 VIEW `database_slave`.`view_company` AS select `database`.`company`.`id` AS `id`,
         `database`.`company`.`name` AS `name`,`database`.`company`.`state` AS `state`,

Тот же фрагмент mysqldump, но из продакшена (красивый и чистый):

/*!50001 VIEW `view_company` AS select `company`.`id` AS `id`,
         `company`.`name` AS `name`,`company`.`state` AS `state`,

Можно это исправить без сброса с прода на раб?

Корень проблемы, с которой я столкнулся, был из-за replicate-rewrite-db вариант в использовании. Репликация сохраняет имя базы данных внутри представлений, поэтому репликация в базу данных с другим именем вызывает эту проблему.

С тех пор мы отказались от использования replicate-rewrite-db вариант, определив по этой и другим причинам, что replicate-rewrite-db это JBYCDMYS вариант (просто потому, что вы можете, не означает, что вы должны).

Похоже, вы столкнулись с ошибкой mysql: http://bugs.mysql.com/bug.php?id=40345 Рассмотрите возможность обновления mysql до последней версии 5.1.X.