可能存在这样的情况:您有一个单一的源服务器,并且希望将不同的数据库复制到不同的副本。例如,您可能希望将不同的销售数据分发到不同的部门,以帮助在数据分析期间分散负载。此布局的示例见图17.2,“将数据库复制到单独的副本”.
可以通过正常配置源和副本来实现这种分离,然后使用——replicate-wild-do-table
每个副本上的配置选项。
你应该不使用——replicate-do-db
在使用基于语句的复制时,因为基于语句的复制会导致该选项的效果根据当前选择的数据库而变化。这也适用于混合格式复制,因为这允许使用基于语句的格式复制一些更新。
然而,它应该是安全的使用——replicate-do-db
为此,如果您只使用基于行的复制,因为在这种情况下,当前选择的数据库对选项的操作没有影响。
例如,要支持分隔,如图17.2,“将数据库复制到单独的副本”,在执行之前,您应该按照如下方式配置每个副本开始复制
:
副本1应该使用
——replicate-wild-do-table = databaseA. %
.副本2应该使用
——replicate-wild-do-table = databaseB. %
.副本3应该使用
——replicate-wild-do-table = databaseC. %
.
此配置中的每个副本都从源接收整个二进制日志,但只执行二进制日志中应用于数据库和表的事件——replicate-wild-do-table
选项在该副本上生效。
如果您有数据必须在复制开始之前同步到副本,您有许多选择:
将所有数据同步到每个副本,并删除不希望保留的数据库、表或两者。
使用, mysqldump为每个数据库创建单独的转储文件,并在每个副本上加载适当的转储文件。
使用原始数据文件转储,只包含每个副本所需的特定文件和数据库。
请注意这是行不通的
InnoDB
数据库,除非你使用innodb_file_per_table
.