2011-08-11 1 views
2

J'ai une base de données esclave qui porte un nom différent de celui de la contrepartie de production. (Nous allons appeler prod database et esclave database_slave.)L'esclave MySQL associe le nom de la base de données de production à de nouvelles vues

Quand je lance un mysqldump de l'esclave (ce que je fais pour faire des copies de dev), deux des vues de base de données ont le nom de base de données qui leur sont rattachés. Je ne peux pas utiliser le fichier de vidage pour créer une autre copie sans l'éditer manuellement.

Si j'exécute le même fichier mysqldump à partir de la copie de production, tout est propre. Donc, pour une raison quelconque, l'esclave a créé ces deux vues incorrectement. (. Les quatre autres points de vue ont été créés avant que la réplication a été créé, que je crois, explique la différence que j'ai confirmé la réplication est synchronisé.)

Snippet du mysqldump de l'esclave:

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

extrait même de le mysqldump, mais de la production (agréable et propre):

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

Puis-je résoudre ce problème sans avoir à vider de prod à l'esclave?

Nous utilisons l'option replicate-rewrite-db.

Répondre

0

Au cas où quelqu'un viendrait chercher ceci, ce que j'ai appris est que les vues de mysql sont construites avec le nom de base de données intact. Par conséquent, lorsque vous utilisez l'option replicate-rewrite-db pour donner un nom différent à l'esclave, les vues ne fonctionneront PAS correctement.

La seule façon que j'ai trouvé pour contourner ce problème est d'éviter d'utiliser le drapeau replicate-rewrite-db.

1

Lors de la configuration de la réplication, les bases de données esclaves (et tous les objets de base de données) doivent être appelées comme sur le serveur maître.

+0

Par défaut, cela est vrai, mais nous utilisons [replicate-rewrite-db] (http://dev.mysql.com/doc/refman/5.0/fr/replication-options-slave.html#option_mysqld_replicate-rewrite -db). Considérez que 23 tables et 4 vues fonctionnent bien. Seulement 2 vues ne le font pas. –

+0

Je ne connaissais pas cette option. – Mchl

+1

Aussi, vous pouvez vouloir poser cette question à: http://serverfault.com/ – Mchl

Questions connexes