实例支持并启用并行复制应用器线程,有时也称为多线程副本。并行使用多个副本应用器线程可以提高复制应用器和增量恢复的吞吐量。
这意味着,在运行 8.0.23 及更高版本的实例上,必须配置以下系统变量
-
binlog_transaction_dependency_tracking=WRITESET
注意此系统变量在 MySQL 8.0.35 和 8.2.0 中已弃用,并在 MySQL 8.4.0 中已删除。从 MySQL 8.4.0 开始,服务器默认使用
WRITESET
行为,并且不再由 MySQL Shell 设置。
默认情况下,应用器线程数(由 slave_parallel_workers
系统变量配置)设置为 4。
当你升级一直在运行 8.0.23 之前的 MySQL 服务器和 MySQL Shell 版本的集群时,实例未配置为使用并行复制应用器。如果未启用并行应用器,则
操作的输出会在 Cluster
.status()instanceErrors
字段中显示一条消息,例如
...
"instanceErrors": [
"NOTE: The required parallel-appliers settings are not enabled on
the instance. Use dba.configureInstance() to fix it."
...
在这种情况下,你应该重新配置实例,以便它们使用并行复制应用器。对于属于 InnoDB 集群的每个实例,通过发出 dba.configureInstance(instance)
来更新配置。请注意,通常在将实例添加到集群之前使用 dba.configureInstance()
,但在这种特殊情况下,无需删除实例,并且配置更改是在实例在线时进行的。
有关并行复制应用器的信息显示在
操作的输出中。例如,如果启用了并行复制应用器,则实例的 Cluster
.status(extended=1)topology
部分输出会在 applierWorkerThreads
下显示线程数。为并行复制应用器配置的系统变量显示在
操作的输出中。Cluster
.options()
服务器系统变量 slave_parallel_workers
(在 MySQL 8.0.30 中已弃用)已在 8.3.0 中删除,并且不能由 MySQL Shell 的 applierWorkerThreads
选项针对 MySQL Server 8.3.0 或更高版本进行设置或读取。
对于早期版本的 MySQL Server,MySQL Shell 的行为没有变化,并且 applierWorkerThreads
仍然可用。
你可以使用 applierWorkerThreads
选项配置实例用于并行复制应用器的线程数,该选项默认为 4 个线程。该选项接受 0 到 1024 范围内的整数,并且只能与 dba.configureInstance()
和 dba.configureReplicaSetInstance()
操作一起使用。例如,要使用 8 个线程,请发出
mysql-js> dba.configureInstance(instance, {applierWorkerThreads: 8, restart: true})
并行复制应用器使用的线程数量的更改仅在实例重新启动并重新加入集群后才会生效。
要禁用并行复制应用器,请将 applierWorkerThreads
选项设置为 0。