文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 39.9Mb
PDF (A4) - 40.0Mb
手冊頁 (TGZ) - 258.5Kb
手冊頁 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


7.6.7.7 複製的克隆

克隆外掛程式支援複製。除了克隆資料外,克隆操作還會從捐贈者擷取複製座標,並將其傳輸到接收者,這使得能夠使用克隆外掛程式來佈建群組複製成員和複本。使用克隆外掛程式進行佈建比複製大量交易要快得多且更有效率。

也可以將群組複製成員設定為使用克隆外掛程式作為分散式復原的選項,在這種情況下,加入的成員會自動選擇最有效率的方式從現有群組成員擷取群組資料。如需更多資訊,請參閱第 20.5.4.2 節,「用於分散式復原的克隆」

在克隆操作期間,二進位日誌位置(檔案名稱、偏移)和 gtid_executed GTID 集都會從捐贈者 MySQL 伺服器執行個體擷取並傳輸到接收者。此資料允許在複製串流中的一致位置啟動複製。儲存在檔案中的二進位日誌和中繼日誌不會從捐贈者複製到接收者。若要啟動複製,在資料被克隆時和複製啟動時之間,不得清除接收者趕上捐贈者所需的二進位日誌。如果所需的二進位日誌不可用,則會回報複製交握錯誤。因此,應在沒有過多延遲的情況下將克隆執行個體新增到複製群組,以避免清除所需的二進位日誌,或新成員大幅落後,而需要更多復原時間。

  • 在克隆的 MySQL 伺服器執行個體上發出此查詢,以檢查傳輸到接收者的二進位日誌位置

    mysql> SELECT BINLOG_FILE, BINLOG_POSITION FROM performance_schema.clone_status;
  • 在克隆的 MySQL 伺服器執行個體上發出此查詢,以檢查傳輸到接收者的 gtid_executed GTID 集

    mysql> SELECT @@GLOBAL.GTID_EXECUTED;

依預設,複製中繼資料儲存庫會保存在表格中,這些表格會在克隆操作期間從捐贈者複製到接收者。複製中繼資料儲存庫會保留與複製相關的組態設定,這些設定可用於在克隆操作後正確繼續複製。mysql.slave_master_infomysql.slave_relay_log_infomysql.slave_worker_info 表格都會複製。

如需每個表格中包含內容的清單,請參閱第 19.2.4.2 節,「複製中繼資料儲存庫」

若要為複製進行克隆,請執行下列步驟

  1. 對於群組複製的新群組成員,請先按照第 20.2.1.6 節,「將執行個體新增至群組」中的指示,設定群組複製的 MySQL 伺服器執行個體。同時設定第 20.5.4.2 節,「用於分散式復原的克隆」中所述的克隆先決條件。當您在加入的成員上發出 START GROUP_REPLICATION 時,克隆操作會由群組複製自動管理,因此您無需手動執行操作,也無需在加入的成員上執行任何其他設定步驟。

  2. 對於來源/複本 MySQL 複製拓撲中的複本,請先將資料從捐贈者 MySQL 伺服器實例手動複製到接收者。捐贈者必須是複製拓撲中的來源或複本。有關複製的說明,請參閱第 7.6.7.3 節,「複製遠端資料」

  3. 在複製操作成功完成後,如果您想在接收者 MySQL 伺服器實例上使用與捐贈者相同的複製通道,請驗證哪些通道可以在來源/複本 MySQL 複製拓撲中自動恢復複製,以及哪些需要手動設定。

    • 對於基於 GTID 的複製,如果接收者配置了gtid_mode=ON,並且是從gtid_mode=ONON_PERMISSIVEOFF_PERMISSIVE 的捐贈者複製而來,則捐贈者的 gtid_executed GTID 集會應用於接收者。如果接收者是從拓撲中已存在的複本複製而來,則當通道啟動時,接收者上使用 GTID 自動定位的複製通道可以在複製操作後自動恢復複製。如果您只想使用這些相同的通道,則無需執行任何手動設定。

    • 對於基於二進制日誌檔案位置的複製,來自捐贈者的二進制日誌位置會應用於接收者。接收者上使用基於二進制日誌檔案位置的複製的複製通道,會在重新啟動複製之前,自動嘗試使用複製的 relay 日誌資訊來執行 relay 日誌復原程序。對於單執行緒複本(replica_parallel_workers 設定為 0),在沒有其他問題的情況下,relay 日誌復原應該會成功,使通道能夠在無需進一步設定的情況下恢復複製。對於多執行緒複本(replica_parallel_workers 大於 0),relay 日誌復原可能會失敗,因為它通常無法自動完成。在這種情況下,會發出錯誤訊息,您必須手動設定通道。

  4. 如果您需要手動設定複製的複製通道,或想在接收者上使用不同的複製通道,以下說明提供了將接收者 MySQL 伺服器實例新增至複製拓撲的摘要和簡略範例。另請參閱適用於您的複製設定的詳細說明。

    • 要將接收者 MySQL 伺服器實例新增至使用基於 GTID 交易的 MySQL 複製拓撲作為複製資料來源,請按照第 19.1.3.4 節,「使用 GTID 設定複製」中的說明,配置所需的實例。如以下簡略範例所示,為實例新增複製通道。CHANGE REPLICATION SOURCE TO 陳述式必須定義來源的主機位址和連接埠號碼,並且應啟用 SOURCE_AUTO_POSITION 選項,如下所示

      CHANGE SOURCE TO SOURCE_HOST = 'source_host_name', SOURCE_PORT = source_port_num,
             ...
             SOURCE_AUTO_POSITION = 1,
             FOR CHANNEL 'setup_channel';
      START REPLICA USER = 'user_name' PASSWORD = 'password' FOR CHANNEL 'setup_channel';
    • 要將接收者 MySQL 伺服器實例新增至使用基於二進制日誌檔案位置複製的 MySQL 複製拓撲,請按照第 19.1.2 節,「設定基於二進制日誌檔案位置的複製」中的說明,配置所需的實例。如以下簡略範例所示,使用複製操作期間傳輸到接收者的二進制日誌位置,為實例新增複製通道

      SELECT BINLOG_FILE, BINLOG_POSITION FROM performance_schema.clone_status;
      CHANGE SOURCE TO SOURCE_HOST = 'source_host_name', SOURCE_PORT = source_port_num,
             ...
             SOURCE_LOG_FILE = 'source_log_name',
             SOURCE_LOG_POS = source_log_pos,
             FOR CHANNEL 'setup_channel';
      START REPLICA USER = 'user_name' PASSWORD = 'password' FOR CHANNEL 'setup_channel';