文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
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.34 節,「複寫與交易不一致性」

當來源使用基於列的二進位日誌格式時,如果您正在複寫任何使用非交易儲存引擎的資料表,則應在關閉副本伺服器之前,在副本上執行 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 警告。