MySQL slave将生产数据库名称附加到新视图

时间:2011-08-11 15:50:45

标签: mysql replication mysqldump

我有一个奴隶数据库,其名称不同于它的生产对应物。 (我们会称prod database和slave database_slave。)

当我从slave运行mysqldump时(我用它来制作dev副本),两个数据库视图都附加了数据库名称。我无法使用转储文件创建另一个副本而无需手动编辑它。

如果我从生产副本中运行相同的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`,

我可以在不必从prod转储到奴隶的情况下解决这个问题吗?

我们正在使用replicate-rewrite-db选项。

2 个答案:

答案 0 :(得分:1)

在复制设置中,从属数据库(和所有数据库对象)的调用与主服务器上的相同。

答案 1 :(得分:0)

如果有人来搜索这个,我学到的是mysql视图是在数据库名称完整的情况下构建的。因此,当使用replicate-rewrite-db选项为从属设备指定其他名称时,视图将无法正常工作。

我发现解决此问题的唯一方法是避免使用replicate-rewrite-db标记。