MySQL 複製功能是使用以下類型的執行緒實作:
二進位日誌傾印執行緒。 當副本連線時,來源會建立一個執行緒,將二進位日誌內容傳送給副本。這個執行緒可以在來源上
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
為
時,會有N
>= 1N
個套用程式執行緒和一個協調器執行緒,該協調器執行緒會依序從中繼日誌讀取交易,並排程讓工作執行緒套用它們。每個工作執行緒都會套用協調器指派給它的交易。
您可以將系統變數 replica_parallel_workers
設定為大於 0 的值,來為副本上的任務啟用進一步的平行化。當執行此操作時,副本會建立指定數量的 worker 執行緒來應用交易,外加一個協調器執行緒,該執行緒從中繼日誌讀取交易並將其指派給 worker。將 replica_parallel_workers
(slave_parallel_workers
)設定為大於 0 的值的副本稱為多執行緒副本。如果您正在使用多個複製通道,則每個通道都具有使用此變數指定的執行緒數量。
NDB Cluster 也支援多執行緒副本。有關更多資訊,請參閱第 25.7.11 節,「使用多執行緒應用程式的 NDB Cluster 複製」。