溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL的Clone插件怎么用

發(fā)布時(shí)間:2022-03-09 09:33:15 來源:億速云 閱讀:244 作者:iii 欄目:MySQL數(shù)據(jù)庫

今天小編給大家分享一下MySQL的Clone插件怎么用的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

MySQL的Clone插件怎么用

克隆插件簡介

MySQL 8.0.17引入了Clone插件,可以進(jìn)行本地或從遠(yuǎn)程MySQL服務(wù)器實(shí)例進(jìn)行克隆,克隆的數(shù)據(jù)是存儲(chǔ)在InnoDB中的數(shù)據(jù)的物理快照,包括schemas、tables、tablespaces和數(shù)據(jù)字典元數(shù)據(jù)??寺〔僮靼ū镜乜寺『瓦h(yuǎn)程克隆。

本地克隆操作:                                                                   遠(yuǎn)程克隆操作:

MySQL的Clone插件怎么用

安裝克隆插件

使用Clone插件進(jìn)行克隆操作,必須先進(jìn)行插件的安裝和配置。插件的名稱是mysql_clone.so,安裝有兩種方法。

方法1:

MySQL數(shù)據(jù)庫的插件默認(rèn)放在系統(tǒng)變量plugin_dir對(duì)應(yīng)的目錄中,在MySQL服務(wù)器啟動(dòng)時(shí)使用--plugin-load-add選項(xiàng)加載該插件即可,但該方法需每次啟動(dòng)服務(wù)器都需要指定對(duì)應(yīng)的選項(xiàng),可以將其配置到my.cnf文件中,即:

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

方法2:

運(yùn)行時(shí)加載該插件,使用INSTALL PLUGIN進(jìn)行安裝,并將插件注冊(cè)到mysql.plugin系統(tǒng)表中:

install plugin clone soname 'mysql_clone.so';

安裝后,可在information_schema.plugins表或通過show plugins查看。

克隆本地?cái)?shù)據(jù)

本地克隆數(shù)據(jù)是將MySQL數(shù)據(jù)目錄克隆相同服務(wù)器或節(jié)點(diǎn)到另一個(gè)目錄 支持的語法如下,

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

執(zhí)行上述語句,對(duì)應(yīng)的用戶需要有BACKUP_ADMIN權(quán)限,而且用戶創(chuàng)建的文件或表空間必須在數(shù)據(jù)目錄中,同時(shí),克隆的目的地需指定絕對(duì)路徑,目錄完整路徑必須存在,但clone_dir必須不存在。

演示:克隆本地?cái)?shù)據(jù)

1)創(chuàng)建用戶

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)創(chuàng)建目錄

[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)驗(yàn)證,使用克隆的目錄啟動(dòng)數(shù)據(jù)庫

[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

克隆遠(yuǎn)程數(shù)據(jù)

克隆遠(yuǎn)程MySQL服務(wù)器實(shí)例(donor)并將其傳輸至執(zhí)行克隆操作的MySQL實(shí)例(recipient),支持的克隆遠(yuǎn)程數(shù)據(jù)的語法如下:

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

其中,

  • user 是donor MySQL服務(wù)器實(shí)例的用戶名;

  • password是user的密碼;

  • host是donor MySQL服務(wù)器實(shí)例的hostname地址,目前支持IPv4,不支持IPv6,但可使用別名;

  • port是donor MySQL服務(wù)器實(shí)例的端口號(hào);

  • DATA DIRECTORY [ = ] 'clone_dir'是可選的子句用于指定接收克隆數(shù)據(jù)的目錄,不指定該選項(xiàng)會(huì)覆蓋已存在的數(shù)據(jù)文件,指定該選項(xiàng)可將克隆數(shù)據(jù)傳輸至該目錄;

  • REQUIRE [ NO ] SSL顯式指定是否使用加密連接;

執(zhí)行克隆操作,克隆插件必須在donor和recipient MySQL服務(wù)器實(shí)例激活,在donor服務(wù)器實(shí)例,克隆用戶需要BACKUP_ADMIN權(quán)限,在recipient服務(wù)器實(shí)例,克隆用戶需要CLONE_ADMIN權(quán)限,CLONE_ADMIN權(quán)限包括BACKUP_ADMIN和SHUTDOWN權(quán)限。

執(zhí)行CLONE INSTANCE語句需滿足下面的先決條件:

  • donor和recipient必須有相同的MySQL服務(wù)器版本,克隆插件在8.0.17版本后支持;

  • donor和recipient必須運(yùn)行在相同的操作系統(tǒng)和平臺(tái);

  • 克隆數(shù)據(jù),recipient必須有足夠的磁盤空間;

  • InnoDB需要在數(shù)據(jù)目錄外面創(chuàng)建表空間,可通過INFORMATION_SCHEMA.FILES查看;

  • 克隆插件必須在donor和recipient激活,可通過SHOW PLUGINS查看;

  • donor和recipient必須有相同的MySQL服務(wù)器字符集和排序規(guī)則;

  • donor和recipient需要有相同的innodb_page_size和innodb_data_file_path設(shè)置;

  • 若克隆加密或頁壓縮的數(shù)據(jù),donor和recipient必須有相同的文件系統(tǒng)塊大??;

  • 若克隆加密的數(shù)據(jù),需要安全的連接;

  • recipient上的clone_valid_donor_list設(shè)置必須包括donor MySQL服務(wù)器實(shí)例的主機(jī)地址;

  • 一次只能有一個(gè)克隆操作,克隆期間不能有其他克隆操作,可通過clone_status查看;

  • 克隆插件以1MB數(shù)據(jù)包和元數(shù)據(jù)的形式傳輸數(shù)據(jù),在donor和recipient MySQL服務(wù)器實(shí)例上所需的最小max_allowed_packet是2MB;

  • donor上的Undo表空間文件名必須唯一,當(dāng)數(shù)據(jù)克隆到recipient,undo表空間克隆到recipient 上innodb_undo_directory指定的位置或DATA DIRECTORY [ = ] 'clone_dir' 子句指定的目錄;

  • 默認(rèn),recipient MySQL服務(wù)器實(shí)例在克隆數(shù)據(jù)完成后自動(dòng)重啟;

  • 幾個(gè)變量控制遠(yuǎn)程克隆操作的各個(gè)方面;

演示:克隆遠(yuǎn)程數(shù)據(jù)

默認(rèn)將數(shù)據(jù)克隆到recipient端的數(shù)據(jù)目錄,并使用donor的數(shù)據(jù)進(jìn)行覆蓋,然后進(jìn)行自動(dòng)重啟recipient端的MySQL服務(wù)器實(shí)例

1)登錄到donor MySQL服務(wù)器實(shí)例,創(chuàng)建用戶并安裝插件(若安裝可忽略)

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服務(wù)器實(shí)例,創(chuàng)建賬戶并安裝插件,并設(shè)置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服務(wù)器實(shí)例,使用 recipient_clone_user用戶或root用戶執(zhí)行克隆操作,操作完成后會(huì)自動(dòng)重啟

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的數(shù)據(jù)克隆到recipient端默認(rèn)會(huì)覆蓋其數(shù)據(jù)文件,也可以指定一個(gè)目錄進(jìn)行克隆,如下:

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)

使用新目錄啟動(dòng)MySQL服務(wù)器實(shí)例:

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

以上就是“MySQL的Clone插件怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI