如何与具有相同数据库名称的主服务器建立多源主/从关系?
我正在使用具有多源复制的MySQL实验室5.7.2版本.多源复制的一个用例是许多mysql服务器的集中备份(https://dev.mysql.com/worklog/task/?id=1697).我想为此目的建立一个环境.但是,我们有多个数据库主服务器都具有相同的数据库名称.似乎没有任何方法可以在从站上重写数据库名称以避免命名冲突(例如在主机或通道名称前加上前缀).
我找到了replicate-rewrite-db选项(http://dev.mysql.com/doc/refman/5.0/en/replication-options-slave.html#option_mysqld_replicate-rewrite-db),听起来很有希望,但似乎并不适用于这种情况.
有没有办法在从属端实现这一点,或者是主端的名称前缀的唯一选择?
解决方法:
我简要搜索了MySQL文档
我找到了嵌入在新机制中的Rewrite DB Option:CHANGE REPLICATION FILTER
它允许您在不重新启动MySQL的情况下操作Rewrite DB.
更新2014-04-02 15:48美国东部时间
阅读MySQL 5.7 Docs之后,我可以肯定地说CHANGE MASTER TO和CHANGE REPLICATION FILTER仍然无法帮助你.原因如下:
>所有主数据库上的所有数据库都具有相同的名称
>复制过滤器的范围是全局的.如果过滤器可以作用于每个MASTER_BIND接口名称,那将是非常方便的.此时,MySQL 5.7不会这样做.
备选
也许您应该在Slave Server上设置多个MySQL实例.使每个MySQL实例使用标准MySQL复制.您可以缩小Slave上所有实例的所有缓冲区大小和设置.
然后,您可以将每个MySQL实例的mysqldump设置为不同的文件夹.
如果您想学习如何在一台服务器上设置多个MySQL实例,请查看我的旧帖子
> 2011年9月30日:Running multiple instances on the same host
> 2012年9月17日:mysqlservice command syntax