19.4.6 将不同的数据库复制到不同的副本
在某些情况下,您可能需要将单个源服务器上的不同数据库复制到不同的副本。例如,您可能想将不同的销售数据分布到不同的部门,以便在数据分析时分配负载。以下是一种示例布局,如Figure 19.2, “Replicating Databases to Separate Replicas”所示。
您可以通过将源和副本配置为正常状态,然后在每个副本上使用--replicate-wild-do-table
配置选项来限制每个副本处理的二进制日志语句。
不要使用--replicate-do-db
在使用语句基 replication时,因为语句基 replication会使得该选项的效果根据当前选择的数据库而变化。这也适用于混合格式 replication,因为这使得一些更新可以使用语句基格式。
然而,如果您只使用行基 replication,可以安全地使用--replicate-do-db
,因为在这种情况下当前选择的数据库对该选项的操作没有影响。
例如,如Figure 19.2, “Replicating Databases to Separate Replicas”所示,您可以将每个副本配置为以下内容,然后执行START REPLICA
:
-
副本1应该使用
--replicate-wild-do-table=databaseA.%
。 -
副本2应该使用
--replicate-wild-do-table=databaseB.%
。 -
副本3应该使用
--replicate-wild-do-table=databaseC.%
。
每个副本在这个配置中都收到源的整个二进制日志,但是只执行来自二进制日志的事件,该事件应用于由--replicate-wild-do-table
选项在该副本上的效果。
如果您需要将数据同步到副本之前,存在多种选择:
-
将所有数据同步到每个副本,然后删除您不想保留的数据库、表或两者。
-
使用mysqldump创建每个数据库的独立备份文件,然后在每个副本上加载适当的备份文件。
-
使用原始数据文件备份,并只包括您需要的特定文件和数据库。
Note这不适用于
InnoDB
数据库,除非您使用innodb_file_per_table
。