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_THREAD
和 SQL_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_applier
和 group_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 REPLICA
或 STOP REPLICA SQL_THREAD
。如果目前的複寫事件群組已修改一個或多個非交易式表格,則 STOP REPLICA
會等待最多 60 秒讓事件群組完成,除非您為複寫 SQL 執行緒發出 KILL QUERY
或 KILL CONNECTION
陳述式。如果在逾時後事件群組仍然未完成,則會記錄錯誤訊息。
當來源使用基於陳述式的二進位日誌格式時,在來源具有開啟的暫存表格時變更來源可能會不安全。這是建議不要對暫存表格進行基於陳述式複寫的原因之一。您可以透過檢查 Replica_open_temp_tables
的值,來找出複本上是否有任何暫存表格。當使用基於陳述式的複寫時,在執行 CHANGE REPLICATION SOURCE TO
之前,此值應為 0。如果在複本上有任何開啟的暫存表格,則在發出 STOP REPLICA
後發出 CHANGE REPLICATION SOURCE TO
陳述式會導致 ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO
警告。