将不同的数据库复制到不同的从站
在某些情况下,您可能只有一个主服务器,并且想要将不同的数据库复制到不同的从服务器。例如,您可能希望将不同的销售数据分配给不同的部门,以帮助在数据分析过程中分散负载。图17.2“使用复制来复制数据库以分隔复制从站”中显示了此布局的示例。
使用复制来复制数据库以分离复制从站
您可以通过正常配置主服务器和从服务器,然后通过使用--replicate-wild-do-table
每个从服务器上的配置选项来限制每个从服务器处理的二进制日志语句来实现这种分离。
重要你应该不使用
--replicate-do-db
使用基于语句的复制时,为了这个目的,因为基于语句的复制导致该选项的效果根据当前选择的数据库变化。这也适用于混合格式复制,因为这使某些更新可以使用基于语句的格式进行复制。但是,
--replicate-do-db
如果仅使用基于行的复制,则可以安全地用于此目的,因为在这种情况下,当前选择的数据库对选项的操作没有影响。
例如,要支持如图17.2“使用复制来复制数据库来分隔复制从站”所示的分隔,在执行以下操作之前,应按以下方式配置每个复制从站START SLAVE
:
- 复制从站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
。