文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


15.4.2.5 STOP REPLICA 陳述式

STOP REPLICA [thread_types] [channel_option]

thread_types:
    [thread_type [, thread_type] ... ]

thread_type: IO_THREAD | SQL_THREAD

channel_option:
    FOR CHANNEL channel

停止複寫執行緒。

STOP REPLICA 需要 REPLICATION_SLAVE_ADMIN 權限 (或已棄用的 SUPER 權限)。建議的最佳實務是在停止複本伺服器之前,先在複本上執行 STOP REPLICA (詳見 第 7.1.19 節「伺服器關閉程序」)。

START REPLICA 類似,此陳述式可以搭配 IO_THREADSQL_THREAD 選項使用,以指定要停止的複寫執行緒。請注意,群組複寫應用程式通道 (group_replication_applier) 沒有複寫 I/O (接收器) 執行緒,只有複寫 SQL (應用程式) 執行緒。因此,使用 SQL_THREAD 選項會完全停止此通道。

STOP REPLICA 會導致隱含地提交正在進行中的交易。請參閱 第 15.3.3 節「導致隱含提交的陳述式」

發出此陳述式之前,gtid_next 必須設定為 AUTOMATIC

您可以透過設定系統變數 rpl_stop_replica_timeout 來控制 STOP REPLICA 在逾時前等待的時間長度。這可以用來避免 STOP REPLICA 與使用不同用戶端連線到複本的其他 SQL 陳述式之間的死鎖。當達到逾時值時,發出命令的用戶端會傳回錯誤訊息並停止等待,但 STOP REPLICA 指令仍然有效。一旦複寫執行緒不再忙碌,就會執行 STOP REPLICA 陳述式,且複本會停止。

某些 CHANGE REPLICATION SOURCE TO 陳述式在複本執行時是允許的,具體取決於複寫執行緒的狀態。然而,在執行 CHANGE REPLICATION SOURCE TO 陳述式之前使用 STOP REPLICA 在這種情況下仍然受到支援。詳見 第 15.4.2.2 節「CHANGE REPLICATION SOURCE TO 陳述式」第 19.4.8 節「容錯移轉期間切換來源」

可選的 FOR CHANNEL channel 子句可讓您指定陳述式所套用的複寫通道。提供 FOR CHANNEL channel 子句會將 STOP REPLICA 陳述式套用到特定的複寫通道。如果沒有指定通道且沒有額外的通道存在,則陳述式會套用到預設通道。如果在使用多個通道時,STOP REPLICA 陳述式未指定通道,則此陳述式會停止所有通道的指定執行緒。詳見 第 19.2.2 節「複寫通道」

群組複寫的複寫通道 (group_replication_appliergroup_replication_recovery) 由伺服器執行個體自動管理。STOP REPLICA 完全不能與 group_replication_recovery 通道一起使用,只有在群組複寫未執行時才應該與 group_replication_applier 通道一起使用。group_replication_applier 通道只有一個應用程式執行緒,沒有接收器執行緒,因此如果需要,可以使用 SQL_THREAD 選項停止,而無需 IO_THREAD 選項。

當複本為多執行緒時 (replica_parallel_workers 為非零值),在停止工作執行緒時,會關閉從中繼日誌執行的交易序列中的任何間隙。如果複本意外停止 (例如,由於工作執行緒中的錯誤,或另一個執行緒發出 KILL),而 STOP REPLICA 陳述式正在執行,則從中繼日誌執行的交易序列可能會變得不一致。詳見 第 19.5.1.35 節「複寫和交易不一致」

當來源使用基於列的二進位日誌格式時,如果您正在複寫任何使用非交易式儲存引擎的表格,則應在關閉複本伺服器之前,在複本上執行 STOP REPLICASTOP REPLICA SQL_THREAD。如果目前的複寫事件群組已修改一個或多個非交易式表格,則 STOP REPLICA 會等待最多 60 秒讓事件群組完成,除非您為複寫 SQL 執行緒發出 KILL QUERYKILL CONNECTION 陳述式。如果在逾時後事件群組仍然未完成,則會記錄錯誤訊息。

當來源使用基於陳述式的二進位日誌格式時,在來源具有開啟的暫存表格時變更來源可能會不安全。這是建議不要對暫存表格進行基於陳述式複寫的原因之一。您可以透過檢查 Replica_open_temp_tables 的值,來找出複本上是否有任何暫存表格。當使用基於陳述式的複寫時,在執行 CHANGE REPLICATION SOURCE TO 之前,此值應為 0。如果在複本上有任何開啟的暫存表格,則在發出 STOP REPLICA 後發出 CHANGE REPLICATION SOURCE TO 陳述式會導致 ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO 警告。