19.2.2 复制通道
在 MySQL 多源复制中,复制服务器打开多个复制通道,每个通道对应一个源服务器。复制通道表示从源服务器到复制服务器的交易路径。每个复制通道都有自己的接收器(I/O)线程、一或多个应用程序(SQL)线程和中继日志。当来自源服务器的交易被通道的接收器线程接收时,它们将被添加到通道的中继日志文件中,并传递给通道的应用程序线程。这使得每个通道都可以独立地运行。
本节描述了通道在复制拓扑结构中的使用,以及它们对单源复制的影响。要配置源服务器和复制服务器以实现多源复制,停止、重置和监控多源复制,请参阅第19.1.5节,“MySQL 多源复制”。
在一个多源复制拓扑结构中,每个复制服务器最多可以创建256个通道。每个复制通道都必须有唯一的(非空)名称,如第19.2.2.4节,“复制通道命名约定”中所述。错误代码和消息将指定生成错误的通道。
每个多源复制服务器上的通道都必须从不同的源服务器复制。不能将多个复制通道从同一个源服务器复制到同一个源服务器。这是因为服务器ID必须在复制拓扑结构中唯一。在源服务器中,服务器ID是唯一的标识符,而不是复制通道的名称,因此它不能识别来自同一个服务器的不同复制通道。
可以将多源复制服务器设置为多线程复制服务器,通过将系统变量replica_parallel_workers
设置为大于0的值。当你这样做时,每个通道在服务器上都有指定的线程数,包括一个协调线程来管理它们。不能为单个通道配置线程数。
可以在多个源上配置多源复制,可以在特定的复制通道上应用过滤器。通道特定的复制过滤器可以在同一个数据库或表存在于多个源上,并且你只需要复制从一个源上。对于基于GTID的复制,如果同一个事务来自多个源(例如在三角形拓扑结构中),你必须确保所有通道上的过滤器设置是一致的。更多信息,请见第19.2.5.4节,“基于通道的复制过滤器”。
为了与之前的版本保持兼容,MySQL服务器在启动时自动创建一个默认通道,该通道的名称为空字符串(""
)。这个通道总是存在;用户不能创建或销毁它。如果没有其他通道(具有非空名称),复制语句将只作用于默认通道,因此所有来自老版本复制的语句都将按预期工作(见第19.2.2.2节,“与之前的复制语句兼容”。描述在本节中提到的通道应用语句只能在至少有一个命名通道时使用。