RESET REPLICA [ALL] [channel_option]
channel_option:
FOR CHANNEL channel
RESET REPLICA
會讓副本忘記其在來源二進位日誌中的位置。
此陳述式旨在用於全新開始;它會清除複寫中繼資料儲存庫、刪除所有中繼日誌檔案,並啟動新的中繼日誌檔案。它還會將使用 CHANGE REPLICATION SOURCE TO
陳述式的 SOURCE_DELAY
選項指定的複寫延遲重設為 0。
即使複寫 SQL 執行緒尚未完全執行所有中繼日誌檔案,也會將其刪除。(如果您發出了 STOP REPLICA
陳述式,或者如果副本負載過高,則副本上很可能存在這種情況。)
對於使用 GTID 的伺服器(gtid_mode
為 ON
),發出 RESET REPLICA
對 GTID 執行歷史記錄沒有任何影響。此陳述式不會變更 gtid_executed
或 gtid_purged
的值,也不會變更 mysql.gtid_executed
資料表。如果您需要重設 GTID 執行歷史記錄,請使用 RESET BINARY LOGS AND GTIDS
,即使啟用 GTID 的伺服器是停用二進位記錄的副本。
RESET REPLICA
需要 RELOAD
權限。
若要使用 RESET REPLICA
,複寫 SQL 執行緒和複寫 I/O (接收器) 執行緒必須停止,因此在執行的副本上,請先使用 STOP REPLICA
,然後再發出 RESET REPLICA
。若要在群組複寫群組成員上使用 RESET REPLICA
,成員狀態必須為 OFFLINE
,這表示外掛程式已載入,但成員目前不屬於任何群組。可以使用 STOP GROUP REPLICATION
陳述式,讓群組成員離線。
選用的 FOR CHANNEL
子句可讓您命名陳述式所套用的複寫通道。提供 channel
FOR CHANNEL
子句會將 channel
RESET REPLICA
陳述式套用至特定的複寫通道。將 FOR CHANNEL
子句與 channel
ALL
選項結合,會刪除指定的通道。如果沒有命名任何通道且沒有額外的通道存在,則陳述式會套用至預設通道。當存在多個複寫通道時,發出沒有 FOR CHANNEL
子句的 channel
RESET REPLICA ALL
陳述式,會刪除所有複寫通道,並僅重新建立預設通道。如需詳細資訊,請參閱章節 19.2.2,「複寫通道」。
RESET REPLICA
不會變更任何複寫連線參數,其中包含來源的主機名稱和連接埠、複寫使用者帳戶及其密碼、PRIVILEGE_CHECKS_USER
帳戶、REQUIRE_ROW_FORMAT
選項、REQUIRE_TABLE_PRIMARY_KEY_CHECK
選項和 ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS
選項。如果您想要變更任何複寫連線參數,可以在伺服器啟動後使用 CHANGE REPLICATION SOURCE TO
陳述式執行此操作。如果您想要移除所有複寫連線參數,請使用 RESET REPLICA ALL
。RESET REPLICA ALL
也會清除 CHANGE REPLICATION SOURCE TO
設定的 IGNORE_SERVER_IDS
清單。當您使用 RESET REPLICA ALL
時,如果您想要再次將執行個體當作副本使用,您需要在伺服器啟動後發出 CHANGE REPLICATION SOURCE TO
陳述式,以指定新的連線參數。
您可以在 CHANGE REPLICATION SOURCE TO
陳述式上設定 GTID_ONLY
選項,以停止複寫通道在複寫中繼資料儲存庫中持續儲存檔案名稱和檔案位置。當您發出 RESET REPLICA
時,複寫中繼資料儲存庫會同步處理。RESET REPLICA ALL
會刪除而非更新儲存庫,因此它們會隱含地同步處理。
如果在發出 RESET REPLICA
之後,但在發出 START REPLICA
之前,伺服器意外結束或故意重新啟動,複寫連線參數會儲存在損毀安全的 InnoDB
資料表 mysql.slave_master_info
和 mysql.slave_relay_log_info
中,作為 RESET REPLICA
作業的一部分。它們也會保留在記憶體中。如果在發出 RESET REPLICA
之後,但在發出 START REPLICA
之前,伺服器意外結束或故意重新啟動,則會從資料表中擷取複寫連線參數,並將其重新套用至通道。這適用於連線和應用程式中繼資料儲存庫。
RESET REPLICA
不會變更任何複寫篩選器設定 (例如 --replicate-ignore-table
),以用於受陳述式影響的通道。不過,RESET REPLICA ALL
會移除在陳述式刪除的通道上設定的複寫篩選器。當重新建立已刪除的通道時,為副本指定的任何全域複寫篩選器都會複製到這些通道,且不會套用任何通道特定的複寫篩選器。如需詳細資訊,請參閱章節 19.2.5.4,「基於複寫通道的篩選器」。
RESET REPLICA
會導致隱含地認可進行中的交易。請參閱章節 15.3.3,「導致隱含認可的陳述式」。
如果複寫 SQL 執行緒在停止時正在複寫暫時資料表,並且發出了 RESET REPLICA
,則會在副本上刪除這些複寫的暫時資料表。
當在 NDB Cluster 副本 SQL 節點上使用時,RESET REPLICA
會清除 mysql.ndb_apply_status
資料表。當您使用此陳述式時,您應該記住 ndb_apply_status
使用 NDB
儲存引擎,因此它會由附加至叢集的所有 SQL 節點共用。
您可以發出 SET
GLOBAL @@
ndb_clear_apply_status=OFF
,然後再執行 RESET REPLICA
來覆寫此行為,這可讓副本在這種情況下不會清除 ndb_apply_status
資料表。