文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 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.3 RESET REPLICA 陳述式

RESET REPLICA [ALL] [channel_option]

channel_option:
    FOR CHANNEL channel

RESET REPLICA 會使複本忘記其在來源二進制日誌中的位置。

此陳述式旨在用於乾淨的啟動;它會清除複寫中繼資料儲存庫,刪除所有中繼日誌檔案,並啟動一個新的中繼日誌檔案。它也會將使用 CHANGE REPLICATION SOURCE TO 陳述式的 SOURCE_DELAY 選項所指定的複寫延遲重設為 0。

注意

所有中繼日誌檔案都會被刪除,即使它們尚未被複寫 SQL 線程完全執行。(如果您發出了 STOP REPLICA 陳述式,或者複本負載過高,則複本上很可能存在這種情況。)

對於使用 GTID 的伺服器(gtid_modeON),發出 RESET REPLICA 不會對 GTID 執行歷史記錄產生影響。此陳述式不會變更 gtid_executedgtid_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 ALLRESET 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_infomysql.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 表格。