实例支持并启用并行复制应用器线程,有时称为多线程副本。并行使用多个副本应用器线程可提高复制应用器和增量恢复的吞吐量。
这意味着在运行 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。