複製外掛程式支援複製。除了複製資料外,複製作業還會從來源提取複製座標,並將其傳輸到接收者,這使得可以使用複製外掛程式來佈建群組複製成員和複本。使用複製外掛程式進行佈建比複製大量交易更快、更有效率。
群組複製成員也可以設定為使用複製外掛程式作為分散式復原的選項,在這種情況下,加入的成員會自動選擇最有效率的方式從現有群組成員擷取群組資料。如需更多資訊,請參閱第 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_info
、mysql.slave_relay_log_info
和 mysql.slave_worker_info
表格都會被複製。
如需了解每個表格中包含的內容列表,請參閱第 19.2.4.2 節,「複製中繼資料儲存庫」。
若要進行複製的克隆,請執行下列步驟
對於群組複製的新群組成員,請先依照第 20.2.1.6 節,「將執行個體新增至群組」中的指示,為群組複製設定 MySQL Server 執行個體。同時,設定第 20.5.4.2 節,「用於分散式復原的克隆」中描述的克隆先決條件。當您在加入的成員上發出
START GROUP_REPLICATION
時,克隆操作會由群組複製自動管理,因此您不需要手動執行操作,也不需要在加入的成員上執行任何其他設定步驟。對於來源/複本 MySQL 複製拓撲中的複本,請先手動將資料從捐贈者 MySQL 伺服器執行個體克隆到接收者。捐贈者必須是複製拓撲中的來源或複本。如需克隆指示,請參閱第 7.6.7.3 節,「克隆遠端資料」。
在克隆操作成功完成後,如果您想在接收者 MySQL 伺服器執行個體上使用與捐贈者相同的複製通道,請驗證哪些通道可以在來源/複本 MySQL 複製拓撲中自動恢復複製,以及哪些通道需要手動設定。
對於基於 GTID 的複製,如果接收者設定為
gtid_mode=ON
,且已從gtid_mode=ON
、ON_PERMISSIVE
或OFF_PERMISSIVE
的捐贈者克隆,則會將捐贈者的gtid_executed
GTID 集套用至接收者。如果接收者是從拓撲中已有的複本克隆而來,則當通道啟動時,接收者上使用 GTID 自動定位的複製通道可以在克隆操作後自動恢復複製。如果您只想使用這些相同的通道,則無需執行任何手動設定。對於基於二進位記錄檔位置的複製,會將捐贈者的二進位記錄檔位置套用至接收者。接收者上使用基於二進位記錄檔位置的複製通道,會在重新啟動複製之前,使用克隆的重播記錄檔資訊自動嘗試執行重播記錄檔復原程序。對於單執行緒複本 (
replica_parallel_workers
設定為 0),如果沒有其他問題,重播記錄檔復原應該會成功,使通道能夠在無需進一步設定的情況下恢復複製。對於多執行緒複本 (replica_parallel_workers
大於 0),重播記錄檔復原很可能會失敗,因為通常無法自動完成。在這種情況下,會發出錯誤訊息,您必須手動設定通道。
如果您需要手動設定克隆的複製通道,或想在接收者上使用不同的複製通道,下列指示會提供將接收者 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';