17.3.4 Replicating Different Databases to Different Slaves 复制不同的数据库到不同的Slaves
有可能的一种情况, 你只有一个master但是需要复制不同的数据库到不同的slaves,
比如, 你需要分发不同的sales 数据到不同的部门来帮助分散数据分析的压力。
Figure 17.2 Using Replication to Replicate Databases to Separate Replication Slaves
使用复制来复制数据库到单独的复制slaves
你可以完成这种分离通过配置master和slave,限制binary log 语句在每个slave处理通过使用
--replicate-wild-do-table 配置选项在每个slave上:
重要:
你不能使用 --replicate-do-db 用于这个目的当使用基于语句的复制,
因为基于语句的复制导致 这个选项的影响 根据当前选择的数据库而定。
这个也同样应用于mixed-format replication , 因为这个会让一些更新被复制 在基于语句格式的情况下。
然而,如果你只使用基于行的复制, --replicate-do-db是安全的,因为在这种情况下,
当前选择的数据库没有影响在这个选项的操作。
例如, 为了支持如图17.2所示的分离,使用复制到复制数据来分散复制slaves:
Replication slave 1 should use --replicate-wild-do-table=databaseA.%.
Replication slave 2 should use --replicate-wild-do-table=databaseB.%.
Replication slave 3 should use --replicate-wild-do-table=databaseC.%.
每个slave 在这种配置下 接收整个binary log 从master, 但是只行包括在--replicate-wild-do-table
选项的binary log的events:
如果你有数据必须被同步到slave 在复制开始前,你有很多选择:
同步所有的数据到每个slave,删除数据库,表和其他你不需要保留的。
使用mysqldump 来创建一个单独的dump 文件为每个数据库,在每个slave上加载dump文件。
注意:
这个不会工作 在InnoDB 数据库 除非你使用 innodb_file_per_table.