這篇文章為大家帶來了關於mysql中的相關知識,其中主要介紹了clone的相關問題,MySQL 8.0.17引入了Clone插件,可以進行本地或從遠端MySQL伺服器實例進行克隆,希望對大家有幫助。
推薦學習: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中文網其他相關文章!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

SublimeText3 Linux新版
SublimeText3 Linux最新版

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

SublimeText3漢化版
中文版,非常好用

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