### 17.2.2复制通道

[17.2.2.1单通道操作命令](channels-commands-single-channel.html)
[17.2.2.2与以前的复制声明的兼容性](channels-with-prev-replication.html)
[17.2.2.3启动选项和复制通道](channels-startup-options.html)
[17.2.2.4复制通道命名约定](channels-naming-conventions.html)

[](<>)[](<>)

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

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

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

笔记

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

通过设置系统变量，还可以将多源副本设置为多线程副本[`复制并行工作人员`](replication-options-replica.html#sysvar_replica_parallel_workers)（来自MySQL 8.0.26）或[`奴隶工人`](replication-options-replica.html#sysvar_slave_parallel_workers)（MySQL 8.0.26之前）设置为大于0的值。在多源复制副本上执行此操作时，复制副本上的每个通道都有指定数量的应用程序线程，外加一个协调器线程来管理它们。无法为单个通道配置应用程序线程的数量。

在MySQL 8.0中，多源副本可以在特定的复制通道上配置复制过滤器。当同一数据库或表存在于多个源上时，可以使用特定于通道的复制筛选器，并且您只需要复制副本就可以从一个源进行复制。对于基于GTID的复制，如果同一事务可能来自多个源（例如在菱形拓扑中），则必须确保所有通道上的筛选设置相同。有关更多信息，请参阅[第17.2.5.4节，“基于复制通道的过滤器”](replication-rules-channel-based-filters.html).

为了与以前的版本兼容，MySQL服务器会在启动时自动创建一个默认通道，其名称为空字符串(`""`).这个频道总是存在；用户无法创建或销毁它。如果没有创建其他通道（具有非空名称），则复制语句仅作用于默认通道，以便来自较旧副本的所有复制语句按预期运行（请参阅）[第17.2.2.2节，“与以前的复制声明的兼容性”](channels-with-prev-replication.html)。只有当至少有一个命名通道时，才能使用本节中描述的应用于复制通道的语句。
