Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Replicating Different Databases to Different Replicas

19.4.6 将不同的数据库复制到不同的副本

在某些情况下,您可能需要将单个源服务器上的不同数据库复制到不同的副本。例如,您可能想将不同的销售数据分布到不同的部门,以便在数据分析时分配负载。以下是一种示例布局,如Figure 19.2, “Replicating Databases to Separate Replicas”所示。

Figure 19.2 Replicating Databases to Separate Replicas

The MySQL source has three databases, databaseA, databaseB, and databaseC. databaseA is replicated only to MySQL Replica 1, databaseB is replicated only to MySQL Replica 2, and databaseC is replicated only to MySQL Replica 3.

您可以通过将源和副本配置为正常状态,然后在每个副本上使用--replicate-wild-do-table配置选项来限制每个副本处理的二进制日志语句。

Important

不要使用--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