MySQL 多源复制使副本能够并行接收来自多个直接源的事务。在多源复制拓扑中,副本为它应该从中接收事务的每个源创建一个复制通道。有关复制通道如何工作的更多信息,请参阅 第 17.2.2 节,“复制通道”。
您可能会选择实施多源复制以实现以下目标:
将多台服务器备份到一台服务器。
合并表分片。
将来自多个服务器的数据合并到单个服务器。
多源复制在应用事务时不执行任何冲突检测或解决,如果需要,这些任务将留给应用程序。
多源副本上的每个通道都必须从不同的源复制。您不能设置从单个副本到单个源的多个复制通道。这是因为副本的服务器 ID 在复制拓扑中必须是唯一的。源仅通过服务器 ID 来区分副本,而不是通过复制通道的名称来区分副本,因此它无法识别来自同一副本的不同复制通道。
replica_parallel_workers
通过将系统变量(从 MySQL 8.0.26 开始)
设置slave_parallel_workers
为大于 0 的值
,也可以将多源副本设置为多线程副本。
在多源副本上执行此操作时,每个通道副本上有指定数量的应用程序线程,加上一个协调器线程来管理它们。您不能为单个通道配置应用程序线程数。
从 MySQL 8.0 开始,多源副本可以在特定的复制通道上配置复制过滤器。当多个源上存在相同的数据库或表时,可以使用特定于通道的复制过滤器,并且您只需要从一个源复制它的副本。对于基于 GTID 的复制,如果同一事务可能来自多个源(例如在菱形拓扑中),则必须确保所有通道上的过滤设置相同。有关详细信息,请参阅 第 17.2.5.4 节,“基于复制通道的过滤器”。
本节提供有关如何为多源复制配置源和副本、如何启动、停止和重置多源副本以及如何监视多源复制的教程。