我有一个奴隶数据库,其名称不同于它的生产对应物。 (我们会称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
选项。
答案 0 :(得分:1)
在复制设置中,从属数据库(和所有数据库对象)的调用与主服务器上的相同。
答案 1 :(得分:0)
如果有人来搜索这个,我学到的是mysql视图是在数据库名称完整的情况下构建的。因此,当使用replicate-rewrite-db
选项为从属设备指定其他名称时,视图将无法正常工作。
我发现解决此问题的唯一方法是避免使用replicate-rewrite-db
标记。