MySQL 8.0.17 clone 插件的安裝和驗(yàn)證過(guò)程
花都網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),花都網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為花都上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的花都做網(wǎng)站的公司定做!
安裝非常簡(jiǎn)單,與安裝其他插件的工作方式相同。下面是安裝克隆插件的命令行:
master [localhost:45008] ((none)) INSTALL PLUGIN clone SONAME 'mysql_clone.so';Query OK, 0 rows affected (0.00 sec)
以及如何檢查克隆插件是否處于活動(dòng)狀態(tài):master [localhost:45008] ((none)) SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINSWHERE PLUGIN_NAME LIKE 'clone';+-------------+---------------+| PLUGIN_NAME | PLUGIN_STATUS |+-------------+---------------+| clone | ACTIVE |+-------------+---------------+1 row in set (0.00 sec)
請(qǐng)注意,這些步驟需要在 Donor(供體)和 Recipient(受體,也成為 Slave)上都執(zhí)行。執(zhí)行安裝后,插件將在重新啟動(dòng)后自動(dòng)加載,因此您不必再擔(dān)心這一點(diǎn)。接下來(lái),我們將在 Donor 上創(chuàng)建具有必要權(quán)限的用戶,這樣我們就可以遠(yuǎn)程連接到實(shí)例來(lái)克隆它。
master [localhost:45008] ((none)) create user clone_user@'%' identified by 'sekret';
Query OK, 0 rows affected (0.01 sec)
master [localhost:45008] ((none)) GRANT BACKUP_ADMIN ON *.* TO 'clone_user'@'%';
Query OK, 0 rows affected (0.00 sec)
作為安全措施,我建議將百分號(hào) % 替換為從機(jī)的 IP、主機(jī)名或網(wǎng)絡(luò)掩碼,以便只有未來(lái)的從服務(wù)器才能接受連接?,F(xiàn)在,從服務(wù)器上,克隆用戶需要CLONE_ADMIN 權(quán)限來(lái)替換從機(jī)數(shù)據(jù),在克隆操作期間阻止 DDL 并自動(dòng)重新啟動(dòng)服務(wù)器。
slave1 [localhost:45009] ((none)) create user clone_user@'localhost' identified by 'sekret';
Query OK, 0 rows affected (0.01 sec)
slave1 [localhost:45009] ((none)) GRANT CLONE_ADMIN ON *.* TO 'clone_user'@'localhost';
Query OK, 0 rows affected (0.00 sec)
接下來(lái),安裝并驗(yàn)證插件,并在主和從服務(wù)器上創(chuàng)建用戶。
克隆過(guò)程
如上所述,克隆過(guò)程可以在本地或遠(yuǎn)程執(zhí)行。此外,它支持復(fù)制,這意味著克隆操作從捐贈(zèng)者提取和傳輸復(fù)制坐標(biāo)并將其應(yīng)用于收件人。它可用于 GTID 或非 GTID 復(fù)制。因此,要開(kāi)始克隆過(guò)程,首先,讓我們確保有一個(gè)有效的供體(Master)。這由 clone_valid_donor_list 參數(shù)控制。由于它是動(dòng)態(tài)參數(shù),您可以在服務(wù)器運(yùn)行時(shí)進(jìn)行更改。使用 show variables 命令將顯示參數(shù)是否具有有效的供體(Master):slave1 [localhost:45009] ((none)) SHOW VARIABLES LIKE 'clone_valid_donor_list';+------------------------+-------+| Variable_name | Value |+------------------------+-------+| clone_valid_donor_list | |+------------------------+-------+1 row in set (0.01 sec)
例子中,我們需要對(duì)它進(jìn)行設(shè)置:slave1 [localhost:45009] ((none)) set global clone_valid_donor_list = '127.0.0.1:45008';Query OK, 0 rows affected (0.00 sec)
下一步不是強(qiáng)制性的,但使用默認(rèn)的 log_error_verbosity,錯(cuò)誤日志不會(huì)顯示有關(guān)克隆進(jìn)度的大量信息。所以,對(duì)于這個(gè)例子,我會(huì)將詳細(xì)程度調(diào)整到更高的級(jí)別(在供體和受體機(jī)上):mysql set global log_error_verbosity=3;Query OK, 0 rows affected (0.00 sec)
現(xiàn)在,讓我們?cè)谑荏w(Slave)上開(kāi)始克隆過(guò)程:slave1 [localhost:45009] ((none)) CLONE INSTANCE FROM clone_user@127.0.0.1:45008 identified by 'sekret';Query OK, 0 rows affected (38.58 sec)
有兩種辦法。
1、在B機(jī)器上裝mysql。
將A機(jī)器上的mysql/data下的你的數(shù)據(jù)庫(kù)目錄整個(gè)拷貝下來(lái)。
將B機(jī)器上的mysql服務(wù)停止。
找到B機(jī)器上的mysql/data目錄,將你拷貝的目錄粘貼進(jìn)去,然后啟動(dòng)mysql服務(wù)就可以了。
2、使用SQL語(yǔ)句備份和恢復(fù)
你可以使用SELECT INTO OUTFILE語(yǔ)句備份數(shù)據(jù),并用LOAD DATA INFILE語(yǔ)句恢復(fù)數(shù)據(jù)。這種方法只能導(dǎo)出數(shù)據(jù)的內(nèi)容,不包括表的結(jié)構(gòu),如果表的結(jié)構(gòu)文件損壞,你必須要先恢復(fù)原來(lái)的表的結(jié)構(gòu)。
語(yǔ)法:
SELECT * INTO {OUTFILE | DUMPFILE} ’file_name’ FROM tbl_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE ’file_name.txt’ [REPLACE | IGNORE]
INTO TABLE tbl_name
SELECT ... INTO OUTFILE ’file_name’
在dos命令提示符下使用mysqldump命令進(jìn)行備份.
如下:
C:\Documents and Settings\Administratormysqldump yinshi c:\\backup.txt -uroot
-p12142022
update b set tel =(select mobile from a where a.id=b.aid)
注:aid是a,b兩個(gè)表的關(guān)聯(lián)字段
把原本的aid字段(主鍵)設(shè)置為自動(dòng)遞增類(lèi)型的,也就是:auto_increment insert into article select fname,title from article where fname like '%海島%' update article set fname=replace(fname,'海島','自然')
1、首先要在本地建立兩個(gè)mysql服務(wù),指定不同的端口。我這里一個(gè)主(3306),一個(gè)從(3307)。
2、然后修改主配置文件:
[mysqld]
server-id = 1
binlog-do-db=test #要同步的數(shù)據(jù)庫(kù)
#binlog-ignore-db=mysql #不同步的數(shù)據(jù)庫(kù),如果指定了binlog-do-db這里應(yīng)該可以不用指定的
log-bin=mysql-bin #要生成的二進(jìn)制日記文件名稱(chēng)
修改從配置文件:
[mysqld]
server-id = 2
log-bin = mysql-bin
replicate-do-db=test
3、在主庫(kù)添加一個(gè)用戶 repl 并指定replication權(quán)限
create user 'repl'@'127.0.0.1' identified by 'asdf';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'127.0.0.1'; -- --這里我指定數(shù)據(jù)庫(kù)(test.*)時(shí)報(bào)錯(cuò),而指定全庫(kù)(*.*)時(shí)會(huì)成功。
4、保持主從mysql的test數(shù)據(jù)庫(kù)初始狀態(tài)一致。
一般是先將所有的表加讀鎖,然后copy磁盤(pán)上的數(shù)據(jù)庫(kù)文件夾。我這里直接停止服務(wù),然后將數(shù)據(jù)文件拷貝過(guò)去。
5、在主數(shù)據(jù)庫(kù)里面運(yùn)行show master status;記下file和position字段對(duì)應(yīng)的參數(shù)。
mysql show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | test | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
6、在從庫(kù)設(shè)置它的master:
mysql change master to master_host='127.0.0.1',master_port=3306,master_user='repl',master_password='asdf',master_log_file='mysql-bin.000001',master_log_pos=107;
Query OK, 0 rows affected (0.19 sec)
這里的master_log_file和master_log_pos對(duì)應(yīng)剛才show master status記下的參數(shù)。
7、在從庫(kù)開(kāi)啟從數(shù)據(jù)庫(kù)復(fù)制功能。
slave start;
mysql slave start;
Query OK, 0 rows affected (0.00 sec)
在從庫(kù)可以通過(guò)show slave status來(lái)查看一些參數(shù)。
8. 此時(shí)在主庫(kù)創(chuàng)建表或插入數(shù)據(jù),在從庫(kù)就會(huì)很快也能看到了。
-- 主庫(kù)
mysql create table tianyc_02(b int);
Query OK, 0 rows affected (0.16 sec)
mysql insert into tianyc_02 values(2013);
Query OK, 1 row affected (0.13 sec)
-- 從庫(kù)
mysql show tables;
+----------------+
| Tables_in_test |
+----------------+
| tianyc_01 |
| tianyc_02 |
+----------------+
2 rows in set (0.00 sec)
mysql select * from tianyc_02;
+------+
| b |
+------+
| 2013 |
+------+
1 row in set (0.00 sec)同理,可以搭建第二、第三個(gè)從節(jié)點(diǎn)。