1.主從復(fù)制原理
? ? ? ?MySQL 主從復(fù)制基于主服務(wù)器在二進(jìn)制日志中跟蹤所有對(duì)數(shù)據(jù)庫(kù)的更改(新建/修改表纬乍、插入佳恬、更新暴心、刪除數(shù)據(jù)等)姐浮。每個(gè)從服務(wù)器從主服務(wù)器接收已經(jīng)記錄到其二進(jìn)制日志保存的更新珠增,以便從服務(wù)器可以對(duì)其數(shù)據(jù)拷貝執(zhí)行相同的操作超歌。
? ? ? ?從服務(wù)器設(shè)置為復(fù)制主服務(wù)器的數(shù)據(jù)后,它連接主服務(wù)器并等待更新過(guò)程蒂教。如果從服務(wù)器失去與主服務(wù)器之間的連接巍举,從服務(wù)器保持定期嘗試連接,直到它能夠繼續(xù)幀聽(tīng)更新凝垛。由--master-connect-retry 選項(xiàng)控制重試間隔懊悯,默認(rèn)為60秒简烘。
? ? ? ?MySQL 使用3個(gè)線程來(lái)執(zhí)行復(fù)制功能,其中1個(gè)在主服務(wù)器上定枷,另兩個(gè)在從服務(wù)器上孤澎。
(1)當(dāng)發(fā)出START SLAVE時(shí),從服務(wù)器創(chuàng)建一個(gè)I/O線程欠窒,用來(lái)連接主服務(wù)器并讓它發(fā)送記錄在其二進(jìn)制日志中的語(yǔ)句覆旭。
(2)主服務(wù)器創(chuàng)建一個(gè)線程將二進(jìn)制日志中的內(nèi)容發(fā)送到從服務(wù)器。該線程可以識(shí)別為主服務(wù)器上SHOW PROCESSLIST的輸出中的Binlog Dump線程岖妄。
(3)從服務(wù)器I/O線程讀取主服務(wù)器Binlog Dump線程發(fā)送的內(nèi)容并將該數(shù)據(jù)拷貝到從服務(wù)器數(shù)據(jù)目錄中的本地文件中型将,即中繼日志。
(4)第3個(gè)線程是SQL線程荐虐,是從服務(wù)器創(chuàng)建用于讀取中繼日志并執(zhí)行日志中包含的更新語(yǔ)句七兜。
(5)有多個(gè)從服務(wù)器的主服務(wù)器為每個(gè)當(dāng)前連接的從服務(wù)器創(chuàng)建一個(gè)線程;每個(gè)從服務(wù)器有自己的I/O和SQL線程福扬。
2.主服務(wù)器配置
(1)環(huán)境:windows7 64位腕铸,MySQL5.1
(2)修改mysql的配置文件my.ini
添加:
#開(kāi)啟二進(jìn)制日志
log-bin
#主服務(wù)器id號(hào)
server-id=15
#對(duì)指定的數(shù)據(jù)庫(kù)記錄二進(jìn)制日志
binlog-do-db=RW_DB
(3)為從服務(wù)器添加mysql賬戶并配置權(quán)限
grant replication slave on *.* to 'replication'@'%' identified by '123456';
flush privileges;
授權(quán)完成后,可以進(jìn)入mysql數(shù)據(jù)庫(kù)铛碑,執(zhí)行以下語(yǔ)句:
select Repl_slave_priv from user where user = 'replication';
查看值是否為Y狠裹。
(4)記錄File 和 Position數(shù)據(jù)項(xiàng)的值
執(zhí)行以下命令:show master status;
查看主服務(wù)器狀態(tài),記錄File 及Position 數(shù)據(jù)項(xiàng)的值汽烦,在配置從服務(wù)器時(shí)會(huì)用到這兩個(gè)值涛菠。
3.從服務(wù)器配置
(1)環(huán)境:windows7 32位,MySQL5.1
(2)修改mysql的配置文件my.ini
添加:
#從服務(wù)器id號(hào)
server-id=94
(3)重啟MySQL
(4)設(shè)置參數(shù)
change master to
master_host = 'XX.XX.XX.15',
master_user = 'replication',
master_password = '123456',
master_log_file = 'ZX-201609262058-bin.000002',
master_log_pos = 106;
(5)連接主服務(wù)器
start slave;
(6)檢查數(shù)據(jù)庫(kù)查看相關(guān)參數(shù)
show slave status;
至此撇吞,MySQL的主從復(fù)制已配置完成俗冻,可以新建表,插入數(shù)據(jù)牍颈,修改和刪除數(shù)據(jù)進(jìn)行測(cè)試迄薄。