展開全部
大多情況下,需要可靠而有效地克隆 MySQL 實例e69da5e887aa62616964757a686964616f31333433643663數據。這包括 MySQL 高可用的解決方案,其中需要在將實例加入組復制集群之前配置實例,或者在經典復制模型中將其添加為 Slave。
為復制拓撲而創建 MySQL 副本一直很麻煩。涉及的步驟很多,首先要備份 MySQL 服務器,通過網絡將備份傳輸到我們想要添加到復制集的新 MySQL 節點,然后在該節點上恢復備份并手動啟動 MySQL 服務器。為了高可用,最好還要將其正確設置備份的 GTID,并啟動并運行群集。涉及的手動步驟數量過多不利于高可用。CLONE 插件解決了這個問題并簡化了副本配置。使您可以使用 MySQL 客戶端(和 SQL 命令)來配置新節點并在發生時觀察克隆進度。無需手動處理多個步驟并維護自己的基礎架構來配置新的 MySQL 節點。
MySQL 8.0.17 引入了 CLONE SQL 語句,使當前的 MySQL 服務器成為另一個運行在不同節點的 MySQL 服務器的“克隆”。我們將執行 clone 語句的服務器實例稱為“受體”。克隆的源服務器實例稱為“供體”。供體克隆以一致的快照存儲在 InnoDB 存儲引擎中的所有數據和元數據,以替換受體中的數據。
成功執行 CLONE SQL 語句后,將自動重新啟動受體服務器。重新啟動涉及恢復克隆的快照數據,就像用老方法復制數據一樣。恢復完成后,受體就是供體的克隆版,隨時可以使用!
這里有一些關于克隆過程的重要注意事項。不克隆 MySQL 配置參數,并且受體保留所有原始配置參數,如克隆之前。這樣做是因為許多配置可能特定于節點(例如 PORT),因此保留它們似乎是一個不錯的選擇。另一方面,一些存儲配置確實需要在供體和受體之間匹配(例如 innodbpagesize),如果這樣的配置參數不匹配,CLONE 將報告錯誤。
CLONE?插件不會克隆二進制日志。
CLONE?插件目前僅支持 InnoDB 存儲引擎。在其他存儲引擎(如 MyISAM 和 CSV)中創建的表將被克隆為空表。克隆基礎架構的設計允許克隆 MySQL 支持的任何存儲引擎。但是,只有 InnoDB 序列化和反序列化方法已經實現并經過測試。
克隆會阻止供體中的所有并發 DDL。
需要注意的事實是受體放棄所有數據以及任何二進制日志,以便成為供體實例的克隆。在執行 CLONE 之前,如果認為有必要,需要備份當前受體數據。