執行個體支援並啟用平行複製應用程式執行緒,有時稱為多執行緒複本。平行使用多個複本應用程式執行緒可提高複製應用程式和增量復原的輸送量。
這表示在執行 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。
當您升級執行 MySQL 伺服器和 MySQL Shell 版本早於 8.0.23 的叢集時,不會將執行個體設定為使用平行複製應用程式。如果未啟用平行應用程式,
作業的輸出會在 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 伺服器 8.3.0 或更高版本設定或讀取。
對於較早版本的 MySQL 伺服器,MySQL Shell 的行為保持不變,而且 applierWorkerThreads
仍然可用。
您可以使用 applierWorkerThreads
選項設定執行個體用於平行複製應用程式的執行緒數目,預設值為 4 個執行緒。此選項接受 0 到 1024 的整數,而且只能用於 dba.configureInstance()
和 dba.configureReplicaSetInstance()
作業。例如,若要使用 8 個執行緒,請發出
mysql-js> dba.configureInstance(instance, {applierWorkerThreads: 8, restart: true})
平行複製應用程式使用的執行緒數目變更只會在執行個體重新啟動並重新加入叢集之後才會發生。
若要停用平行複製應用程式,請將 applierWorkerThreads
選項設定為 0。