搜尋
首頁資料庫mysql教程MySQL詳細解析之Clone插件

這篇文章為大家帶來了關於mysql中的相關知識,其中主要介紹了clone的相關問題,MySQL 8.0.17引入了Clone插件,可以進行本地或從遠端MySQL伺服器實例進行克隆,希望對大家有幫助。

MySQL詳細解析之Clone插件

推薦學習:mysql教學

#複製外掛程式簡介

##MySQL 8.0. 17引入了Clone插件,可以進行本地或從遠端MySQL伺服器實例進行克隆,克隆的資料是儲存在InnoDB中的資料的實體快照,包括schemas、tables、tablespaces和資料字典元資料。克隆操作包括本地克隆和遠端克隆。

本地複製作業:                                         

安裝複製外掛程式

使用Clone外掛程式進行複製操作,必須先進行外掛程式的安裝和配置。插件的名稱是mysql_clone.so,安裝有兩種方法。

方法1:

MySQL資料庫的外掛預設放在系統變數plugin_dir對應的目錄中,在MySQL伺服器啟動時使用--plugin-load-add選項載入該外掛程式即可,但此方法需每次啟動伺服器都需要指定對應的選項,可以將其配置到my.cnf檔案中,即:

[mysqld]
plugin-load-add=mysql_clone.so

方法2:

執行階段載入該插件,使用INSTALL PLUGIN進行安裝,並將外掛程式註冊至mysql.plugin系統表中:

install plugin clone soname 'mysql_clone.so';

安裝後,可在information_schema.plugins表或透過show plugins查看。

複製本機資料

本地複製資料是將MySQL資料目錄複製相同伺服器或節點到另一個目錄支援的語法如下,

CLONE LOCAL DATA DIRECTORY [=] '/path/to/clone_dir'

執行上述語句,對應的使用者需要有BACKUP_ADMIN權限,且使用者建立的檔案或表空間必須在資料目錄中,同時,複製的目的地需指定絕對路徑,目錄完整路徑必須存在,但clone_dir必須不存在。

示範:複製本機資料

1)建立使用者

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.25 |
+-----------+
1 row in set (0.00 sec)
mysql> create user clone_admin identified by 'Cl0neTest';
Query OK, 0 rows affected (0.02 sec)
mysql> grant backup_admin on *.* to clone_admin;
Query OK, 0 rows affected (0.10 sec)

2)建立目錄

[root@node1 ~]# mkdir /mysql/clone/
[root@node1 ~]# chown -R mysql:mysql /mysql/clone/

3)複製操作

mysql> clone local data directory='/mysql/clone/clone_data';
Query OK, 0 rows affected (17.09 sec)

4)查看克隆後的檔案

[root@node1 ~]# ll /mysql/clone/clone_data/
total 6348816
drwxr-x---. 2 mysql mysql 89 Nov 28 11:26 #clone
-rw-r-----. 1 mysql mysql 9231 Nov 28 11:26 ib_buffer_pool
-rw-r-----. 1 mysql mysql 4294967296 Nov 28 11:26 ibdata1
-rw-r-----. 1 mysql mysql 1073741824 Nov 28 11:26 ib_logfile0
-rw-r-----. 1 mysql mysql 1073741824 Nov 28 11:26 ib_logfile1
drwxr-x---. 2 mysql mysql 6 Nov 28 11:26 mysql
-rw-r-----. 1 mysql mysql 25165824 Nov 28 11:26 mysql.ibd
drwxr-x---. 2 mysql mysql 4096 Nov 28 11:26 sakila
drwxr-x---. 2 mysql mysql 28 Nov 28 11:26 sys
-rw-r-----. 1 mysql mysql 16777216 Nov 28 11:26 undo_001
-rw-r-----. 1 mysql mysql 16777216 Nov 28 11:26 undo_002

5)驗證,使用克隆的目錄啟動資料庫

[root@node1 ~]# service mysql.server stop
Shutting down MySQL.... SUCCESS!
[root@node1 ~]# mysqld_safe --datadir=/mysql/clone/clone_data/ --lower-case-table-names=1 --user=mysql
2021-11-28T03:47:11.012900Z mysqld_safe Logging to '/mysql/clone/clone_data/node1.com.cn.err'.
2021-11-28T03:47:11.036181Z mysqld_safe Starting mysqld daemon with databases from /mysql/clone/clone_data

克隆遠端資料

克隆遠端MySQL伺服器實例(donor)並將其傳輸至執行複製操作的MySQL實例(recipient),支援的複製遠端資料的語法如下:

CLONE INSTANCE FROM 'user'@'host':port
IDENTIFIED BY 'password'
[ DATA DIRECTORY [ = ] 'clone_dir' ]
[ REQUIRE [ NO ] SSL ]

其中,

user 是donor MySQL伺服器實例的使用者名稱;

password是user的密碼;
  • host是donor MySQL伺服器實例的hostname位址,目前支援IPv4,不支援IPv6,但可使用別名;
  • #port是donor MySQL伺服器實例的連接埠號碼;
  • DATA DIRECTORY [ = ] 'clone_dir'是可選的子句用於指定接收複製資料的目錄,不指定該選項會覆寫已存在的資料文件,指定該選項可將複製資料傳輸至該目錄;
  • REQUIRE [ NO ] SSL明確指定是否使用加密連線;
  • 執行複製操作,複製外掛程式必須在donor和recipient MySQL伺服器實例激活,在donor伺服器實例,複製使用者需要BACKUP_ADMIN權限,在recipient伺服器實例,複製使用者需要CLONE_ADMIN權限,CLONE_ADMIN權限包括BACKUP_ADMIN和SHUTDOWN權限。
  • 執行CLONE INSTANCE語句需滿足下面的先決條件:
  • donor和recipient必须有相同的MySQL服务器版本,克隆插件在8.0.17版本后支持;
  • donor和recipient必须运行在相同的操作系统和平台;
  • 克隆数据,recipient必须有足够的磁盘空间;
  • InnoDB需要在数据目录外面创建表空间,可通过INFORMATION_SCHEMA.FILES查看;
  • 克隆插件必须在donor和recipient激活,可通过SHOW PLUGINS查看;
  • donor和recipient必须有相同的MySQL服务器字符集和排序规则;
  • donor和recipient需要有相同的innodb_page_size和innodb_data_file_path设置;
  • 若克隆加密或页压缩的数据,donor和recipient必须有相同的文件系统块大小;
  • 若克隆加密的数据,需要安全的连接;
  • recipient上的clone_valid_donor_list设置必须包括donor MySQL服务器实例的主机地址;
  • 一次只能有一个克隆操作,克隆期间不能有其他克隆操作,可通过clone_status查看;
  • 克隆插件以1MB数据包和元数据的形式传输数据,在donor和recipient MySQL服务器实例上所需的最小max_allowed_packet是2MB;
  • donor上的Undo表空间文件名必须唯一,当数据克隆到recipient,undo表空间克隆到recipient 上innodb_undo_directory指定的位置或DATA DIRECTORY [ = ] 'clone_dir' 子句指定的目录;
  • 默认,recipient MySQL服务器实例在克隆数据完成后自动重启;
  • 几个变量控制远程克隆操作的各个方面;

演示:克隆远程数据

默认将数据克隆到recipient端的数据目录,并使用donor的数据进行覆盖,然后进行自动重启recipient端的MySQL服务器实例

1)登录到donor MySQL服务器实例,创建用户并安装插件(若安装可忽略)

mysql> create user 'donor_clone_user' identified by 'donor_clone_user';
Query OK, 0 rows affected (0.02 sec)
mysql> grant backup_admin on *.* to donor_clone_user;
Query OK, 0 rows affected (0.01 sec)

2)登录到recipient MySQL服务器实例,创建账户并安装插件,并设置clone_valid_donor_list

mysql> create user recipient_clone_user identified by 'recipient_clone_user';
Query OK, 0 rows affected (0.04 sec)
mysql> grant clone_admin,backup_admin on *.* to recipient_clone_user;
Query OK, 0 rows affected (0.01 sec)
mysql> install plugin clone soname 'mysql_clone.so';
Query OK, 0 rows affected (0.01 sec)
mysql> set global clone_valid_donor_list='192.168.56.53:3306';
Query OK, 0 rows affected (0.00 sec)

3)登录到recipient MySQL服务器实例,使用 recipient_clone_user用户或root用户执行克隆操作,操作完成后会自动重启

mysql> clone instance from 'donor_clone_user'@'192.168.56.81':3306 identified by 'donor_clone_user';
Query OK, 0 rows affected (51.08 sec)

注:将donor的数据克隆到recipient端默认会覆盖其数据文件,也可以指定一个目录进行克隆,如下:

mysql> clone instance from 'donor_clone_user'@'192.168.56.81':3306 identified by 'donor_clone_user' data directory='/mysql/clone/clone_data';
Query OK, 0 rows affected (51.17 sec)

使用新目录启动MySQL服务器实例:

[root@node2 clone]# mysqld --lower-case-table-names=1 --datadir=/mysql/clone/clone_data/ --user=mysql &

推荐学习:mysql视频教程

以上是MySQL詳細解析之Clone插件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)Apr 10, 2025 am 09:36 AM

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL:開發人員的基本技能MySQL和SQL:開發人員的基本技能Apr 10, 2025 am 09:30 AM

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

描述MySQL異步主奴隸複製過程。描述MySQL異步主奴隸複製過程。Apr 10, 2025 am 09:30 AM

MySQL異步主從復制通過binlog實現數據同步,提升讀性能和高可用性。 1)主服務器記錄變更到binlog;2)從服務器通過I/O線程讀取binlog;3)從服務器的SQL線程應用binlog同步數據。

mysql:簡單的概念,用於輕鬆學習mysql:簡單的概念,用於輕鬆學習Apr 10, 2025 am 09:29 AM

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL:數據庫的用戶友好介紹MySQL:數據庫的用戶友好介紹Apr 10, 2025 am 09:27 AM

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

InnoDB緩衝池如何工作,為什麼對性能至關重要?InnoDB緩衝池如何工作,為什麼對性能至關重要?Apr 09, 2025 am 12:12 AM

InnoDBBufferPool通過將數據和索引頁加載到內存中來提升MySQL數據庫的性能。 1)數據頁加載到BufferPool中,減少磁盤I/O。 2)臟頁被標記並定期刷新到磁盤。 3)LRU算法管理數據頁淘汰。 4)預讀機制提前加載可能需要的數據頁。

MySQL:初學者的數據管理易用性MySQL:初學者的數據管理易用性Apr 09, 2025 am 12:07 AM

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

與MySQL中使用索引相比,全表掃描何時可以更快?與MySQL中使用索引相比,全表掃描何時可以更快?Apr 09, 2025 am 12:05 AM

全表掃描在MySQL中可能比使用索引更快,具體情況包括:1)數據量較小時;2)查詢返回大量數據時;3)索引列不具備高選擇性時;4)複雜查詢時。通過分析查詢計劃、優化索引、避免過度索引和定期維護表,可以在實際應用中做出最優選擇。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。