執行個體支援並啟用平行複製應用程式執行緒,有時也稱為多執行緒複本。平行使用多個複本應用程式執行緒可提高複本應用程式和增量復原的輸送量。
這表示在執行 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 的叢集時,執行個體不會設定為使用平行複製應用程式。如果未啟用平行應用程式,則
作業的輸出會在 Cluster
.status()instanceErrors
欄位中顯示訊息,例如
...
"instanceErrors": [
"NOTE: The required parallel-appliers settings are not enabled on
the instance. Use dba.configureInstance() to fix it."
...
在這種情況下,您應該重新設定執行個體,使其使用平行複製應用程式。針對屬於 InnoDB Cluster 的每個執行個體,發出 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。