十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
MySQL數(shù)據(jù)庫(kù)中怎么實(shí)現(xiàn)復(fù)制操作,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
MySQL數(shù)據(jù)庫(kù)復(fù)制操作大致可以分為三個(gè)步驟:
步驟1:主服務(wù)器將數(shù)據(jù)的改變記錄到二進(jìn)制日志中。
步驟2:從服務(wù)器將主服務(wù)器的binary log events復(fù)制到它的中繼日志(relay log)中。
步驟3:從服務(wù)器重做中繼日志中的事件,將數(shù)據(jù)的改變與從服務(wù)器保持同步。
詳細(xì)步驟如下:
首先,主服務(wù)器會(huì)記錄二進(jìn)制日志,每個(gè)事務(wù)更新數(shù)據(jù)完成之前,主服務(wù)器將這些操作的信息記錄在二進(jìn)制日志里面,在事件寫入二進(jìn)制日志完成后,主服務(wù)器通知存儲(chǔ)引擎
提交事務(wù)。
Slave上面的I/O進(jìn)程連接上Master,并發(fā)出日志請(qǐng)求,Master接收到來(lái)自Slave的IO進(jìn)程的請(qǐng)求后,通過(guò)負(fù)責(zé)復(fù)制的IO進(jìn)程根據(jù)請(qǐng)求信息讀取制定日志指定位置之后的日志信息,
返回給Slave的IO進(jìn)程。返回信息中除了日志所包含的信息之外,還包括本次返回的信息已經(jīng)到Master端的bin-log文件的名稱已經(jīng)bin-log的位置。
Slave的I/O進(jìn)程接收到信息后,將接收到的日志內(nèi)容依次添加到Slave端的relay-log文件的最末端,并將讀取到Master端的bin-log的文件和位置記錄到master-info文件中。
Slave的SQL進(jìn)程檢測(cè)到replay-log中新增了內(nèi)容后,會(huì)馬上解析replay-log的內(nèi)容成為在Master端真實(shí)執(zhí)行時(shí)候的那些可執(zhí)行的內(nèi)容,并在自身執(zhí)行。
MySQL的復(fù)制環(huán)境90%以上都是一個(gè)Master帶一個(gè)或者多個(gè)Slave的架構(gòu)模式,如果master和slave的壓力不是太大的話,異步
復(fù)制的延時(shí)一般都很少。尤其是slave端的復(fù)制方式改成兩個(gè)進(jìn)程處理以后,更是減小了slave端的延時(shí)。
備注:對(duì)于數(shù)據(jù)實(shí)時(shí)性要求不是特別嚴(yán)格的應(yīng)用,只需要通過(guò)廉價(jià)的PC服務(wù)器來(lái)擴(kuò)展slave的數(shù)量,將讀壓力分散到多臺(tái)slave
的機(jī)器上面,即可解決數(shù)據(jù)庫(kù)端的讀壓力瓶頸。這在很大程度上解決了目前很多中小企業(yè)網(wǎng)站的數(shù)據(jù)庫(kù)壓力瓶頸問(wèn)題,甚至有些
大型網(wǎng)站也在使用類似方案解決MySQL數(shù)據(jù)庫(kù)瓶頸。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。