本文實(shí)例講述了mysql 復(fù)制原理與實(shí)踐應(yīng)用。,具體如下:
復(fù)制功能是將一個(gè)mysql數(shù)據(jù)庫(kù)上的數(shù)據(jù)復(fù)到一個(gè)或多個(gè)mysql從數(shù)據(jù)庫(kù)上。
復(fù)制的原理:在主服務(wù)器上執(zhí)行的所有DDL和DML語(yǔ)句都會(huì)被記錄到二進(jìn)制日志中,這些日志由連接到它的從服務(wù)器獲取,并復(fù)制到從庫(kù),并保存為中繼日志,
這個(gè)過(guò)程由一個(gè)稱為 IO線程 的線程負(fù)責(zé),還有一個(gè)稱為 SQL線程 的則按順序執(zhí)行中繼日志中的語(yǔ)句。
復(fù)制有多種拓?fù)湫问剑?/p>
1、傳統(tǒng)復(fù)制,一主多從,一個(gè)主服務(wù)器多個(gè)從服務(wù)器。
2、鏈?zhǔn)綇?fù)制,一臺(tái)服務(wù)器從主庫(kù)復(fù)制,而另一臺(tái)服務(wù)器又從這臺(tái)復(fù)制,中間服務(wù)器又叫中繼主庫(kù)。
3、主主復(fù)制,兩個(gè)主庫(kù)互相接受寫入和復(fù)制。
4、多源復(fù)制,一個(gè)從庫(kù),從多個(gè)主庫(kù)復(fù)制。
一、復(fù)制如何操作
1、在主庫(kù)上啟用二進(jìn)制日志記錄。
2、在主庫(kù)上創(chuàng)建一個(gè)復(fù)制用戶。
3、在從訓(xùn)上設(shè)置唯一的 server_id。
4、從主庫(kù)中備份數(shù)據(jù)。
5、在從庫(kù)上恢復(fù)主庫(kù)備份的數(shù)據(jù)。
6、執(zhí)行CHANGE MASTER TO命令。
7、開(kāi)始復(fù)制。
二、具體的操作步驟如下:
1、在 主庫(kù) 上,啟用二進(jìn)制日志并設(shè)置server_id。
#設(shè)置server_idserver_id = 1#開(kāi)啟binlog日志log-bin = mysql-bin
2、在主庫(kù)上創(chuàng)建復(fù)制用戶
create user '用戶名'@'%' identified by '密碼';grant replication slave on *.* to '用戶名'@'%';
3、在從庫(kù)上設(shè)置server_id
#設(shè)置server_idserver_id = 10
4、備份主庫(kù)上的數(shù)據(jù)
mysqldump -u root -p --all-databases --routines --events --triggers --single-transaction --master-data > 導(dǎo)出路徑
5、在從庫(kù)上恢復(fù)主庫(kù)導(dǎo)出的數(shù)據(jù)
mysql -u root -p -f < 主庫(kù)備份文件.sql
6、在從庫(kù)上執(zhí)行 CHANGE MASTER TO 命令
CHANGE MASTER TO MASTER_HOST='主庫(kù)IP',MASTER_USER='主庫(kù)復(fù)制用戶',MASTER_PASSWORD='密碼',MASTER_LOG_FILE='二進(jìn)制日志名稱',MASTER_LOG_POS=二進(jìn)制日志位置;
二進(jìn)制日志名稱和二進(jìn)制日志位置,已經(jīng)在備份主庫(kù)文件中包含了,類似如下所示:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000016', MASTER_LOG_POS=47845;
7、從庫(kù)上運(yùn)行 start slave,然后 show slave status/G; 查看復(fù)制狀態(tài);
三、設(shè)置主主復(fù)制
假設(shè)主庫(kù)分別是master1和master2。
1、設(shè)置master2為只讀
set @@global.read_only = on;
2、在master2上創(chuàng)建復(fù)制用戶,如果存在,則不用創(chuàng)建了
create user '用戶名'@'%' identified by '密碼';grant replication slave on *.* to '用戶名'@'%';
新聞熱點(diǎn)
疑難解答
圖片精選