MySQL 8.0 参考手册  / 第十七章复制  / 17.2 复制实现  /  17.2.2 复制通道

17.2.2 复制通道

在 MySQL 多源复制中,一个副本打开多个复制通道,每个源服务器一个。复制通道表示事务从源流向副本的路径。每个复制通道都有自己的接收方 (I/O) 线程、一个或多个应用程序 (SQL) 线程和中继日志。当来自源的事务被通道的接收线程接收时,它们被添加到通道的中继日志文件中并传递到通道的应用程序线程。这使每个通道都可以独立运行。

本节介绍如何在复制拓扑中使用通道,以及它们对单源复制的影响。有关为多源复制配置源和副本、启动、停止和重置多源副本以及监视多源复制的说明,请参阅 第 17.1.5 节,“MySQL 多源复制”

在多源复制拓扑中,可以在一个副本服务器上创建的最大通道数为 256。每个复制通道必须具有唯一(非空)名称,如第 17.2.2.4 节“复制通道命名约定”中所述。启用多源复制时发出的错误代码和消息指定生成错误的通道。

笔记

多源副本上的每个通道都必须从不同的源复制。您不能设置从单个副本到单个源的多个复制通道。这是因为副本的服务器 ID 在复制拓扑中必须是唯一的。源仅通过服务器 ID 来区分副本,而不是通过复制通道的名称来区分副本,因此它无法识别来自同一副本的不同复制通道。

replica_parallel_workers通过将系统变量(从 MySQL 8.0.26 开始)或 slave_parallel_workers(在 MySQL 8.0.26 之前)设置为大于 0 的值 ,也可以将多源副本设置为多线程副本。 当您在多源副本,副本上的每个通道都有指定数量的应用线程,加上一个协调线程来管理它们。您不能为单个通道配置应用程序线程数。

从 MySQL 8.0 开始,多源副本可以在特定的复制通道上配置复制过滤器。当多个源上存在相同的数据库或表时,可以使用特定于通道的复制过滤器,并且您只需要从一个源复制它的副本。对于基于 GTID 的复制,如果同一事务可能来自多个源(例如在菱形拓扑中),则必须确保所有通道上的过滤设置相同。有关详细信息,请参阅 第 17.2.5.4 节,“基于复制通道的过滤器”

为了提供与以前版本的兼容性,MySQL 服务器在启动时自动创建一个名称为空字符串 ( "") 的默认通道。该频道始终存在;用户不能创建或销毁它。如果没有创建其他通道(具有非空名称),则复制语句仅作用于默认通道,以便来自旧副本的所有复制语句都按预期运行(请参阅 第 17.2.2.2 节,“与以前的复制语句的兼容性”。应用语句只有在至少有一个命名通道时才能使用本节中描述的复制通道。