MySQL 主從復(fù)制
MySQL主從復(fù)制具體的過(guò)程為master啟動(dòng)dump線程,和slave的IO的線程建立連接,把master的bin log傳遞給slave,slave的IO的線程將從master得到的數(shù)據(jù),寫到本地的relay log(中繼日志)中,之后slave的SQL線程對(duì)本地的relay log 進(jìn)行回放。為了方便MySQL識(shí)別主從,即MySQL做主從復(fù)制,他們的server id不一樣
MySQL主從復(fù)制的必要條件
master
-
server id: 區(qū)別主從服務(wù)
-
bin log: 記錄master的寫操作,并同步給從
-
dump thread: 與從服務(wù)器的IO thread 建立連接,負(fù)責(zé)把本地bin log發(fā)送給slave 的IO thread
slave
-
server id:區(qū)分主從服務(wù)
-
relay log: 中繼日志,負(fù)責(zé)從存儲(chǔ)IO線程讀過(guò)來(lái)的數(shù)據(jù)。但SQL線程一回放完中繼日志的內(nèi)容,中繼日志內(nèi)容不保存
-
io thread:從master獲取數(shù)據(jù),并保存在本地的relay log中
-
sql thread:負(fù)責(zé)回放本地的relay log
MySQL server-id參數(shù)的額外說(shuō)明
server-id 本質(zhì)區(qū)分每個(gè)MySQL
當(dāng)MySQL使用雙主互為主從的時(shí)候,會(huì)出現(xiàn)寫循環(huán)。即master 寫入,會(huì)在slave回放,但回放的同時(shí)slave會(huì)寫入bin log,主會(huì)拉取slave寫入的bin log數(shù)據(jù),寫入本地的relay log,然后回放,又寫入bin log依次會(huì)陷入循環(huán)。而server id是標(biāo)識(shí)mysql,當(dāng)mysql 拉取的binlog中的server-id,發(fā)現(xiàn)是自己的server id,就不會(huì)拉取
|