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
之後,如果發生非預期的伺服器結束或刻意重新啟動,複寫連線參數會作為 RESET REPLICA
作業的一部分,保留在可避免當機的 InnoDB
表格 mysql.slave_master_info
和 mysql.slave_relay_log_info
中。它們也會保留在記憶體中。在發出 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 節點共用。
您可以在執行 RESET REPLICA
之前發出 SET
GLOBAL @@
ndb_clear_apply_status=OFF
,以覆寫此行為,這可防止複本在此類情況下清除 ndb_apply_status
表格。