MySQL 8.4 Release Notes
19.2.3 复制线程
MySQL 复制功能使用以下类型的线程实现:
-
二进制日志dump线程。 源服务器创建一个线程,用于将二进制日志内容发送到副本服务器时,副本服务器连接时。这个线程可以在源服务器上使用
SHOW PROCESSLIST
命令的输出中被识别为Binlog Dump
线程。 -
复制I/O接收线程。 在副本服务器上执行
START REPLICA
语句时,副本服务器创建一个I/O(接收)线程,该线程连接到源服务器,请求源服务器发送其二进制日志中的更新记录。这个线程读取源服务器的
Binlog Dump
线程发送的更新记录,并将其复制到副本服务器的本地文件中,这些文件组成了副本服务器的中继日志。这个线程的状态在
SHOW REPLICA STATUS
命令的输出中显示为Slave_IO_running
。 -
复制SQL应用线程。 当
replica_parallel_workers
等于0时,副本服务器创建一个SQL(应用)线程,读取中继日志,并执行其中的事务。当replica_parallel_workers
大于0时,有N
个应用线程和一个协调线程,协调线程从中继日志中读取事务,并将其分配给工作线程,每个工作线程应用协调线程分配给它的事务。
您可以通过设置系统变量replica_parallel_workers
的值大于0来启用副本服务器的多线程应用。这样,副本服务器将创建指定数量的工作线程来应用事务,并且一个协调线程来读取事务从中继日志,并将其分配给工作线程。如果您使用多个复制通道,每个通道都可以使用这个变量指定线程数量。
NDB 集群还支持多线程复制。详见第25.7.11节,“NDB 集群使用多线程应用程序”,了解更多信息。