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