一、什么是主從復(fù)制
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括恩平網(wǎng)站建設(shè)、恩平網(wǎng)站制作、恩平網(wǎng)頁(yè)制作以及恩平網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,恩平網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到恩平省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!主從復(fù)制,是用來(lái)建立一個(gè)和主數(shù)據(jù)庫(kù)完全一樣的數(shù)據(jù)庫(kù)環(huán)境,稱為從數(shù)據(jù)庫(kù),主數(shù)據(jù)庫(kù)一般是準(zhǔn)實(shí)時(shí)的業(yè)務(wù)數(shù)據(jù)庫(kù)。在最常用的mysql數(shù)據(jù)庫(kù)中,支持單項(xiàng)、異步賦值。在賦值過(guò)程中,一個(gè)服務(wù)器充當(dāng)主服務(wù)器,而另外一臺(tái)服務(wù)器充當(dāng)從服務(wù)器;此時(shí)主服務(wù)器會(huì)將更新信息寫(xiě)入到一個(gè)特定的二進(jìn)制文件中。
并會(huì)維護(hù)文件的一個(gè)索引用來(lái)跟蹤日志循環(huán)。這個(gè)日志可以記錄并發(fā)送到從服務(wù)器的更新中去。當(dāng)一臺(tái)從服務(wù)器連接到主服務(wù)器時(shí),從服務(wù)器會(huì)通知主服務(wù)器從服務(wù)器的日志文件中讀取最后一次成功更新的位置。然后從服務(wù)器會(huì)接收從哪個(gè)時(shí)刻起發(fā)生的任何更新,然后鎖住并等到主服務(wù)器通知新的更新。
二、主從復(fù)制的作用
一是確保數(shù)據(jù)安全;做數(shù)據(jù)的熱備,作為后備數(shù)據(jù)庫(kù),主數(shù)據(jù)庫(kù)服務(wù)器故障后,可切換到從數(shù)據(jù)庫(kù)繼續(xù)工作,避免數(shù)據(jù)的丟失。
二是提升I/O性能;隨著日常生產(chǎn)中業(yè)務(wù)量越來(lái)越大,I/O訪問(wèn)頻率越來(lái)越高,單機(jī)無(wú)法滿足,此時(shí)做多庫(kù)的存儲(chǔ),有效降低磁盤(pán)I/O訪問(wèn)的頻率,提高了單個(gè)設(shè)備的I/O性能。
三是讀寫(xiě)分離,使數(shù)據(jù)庫(kù)能支持更大的并發(fā);在報(bào)表中尤其重要。由于部分報(bào)表sql語(yǔ)句非常的慢,導(dǎo)致鎖表,影響前臺(tái)服務(wù)。如果前臺(tái)使用master,報(bào)表使用slave,那么報(bào)表sql將不會(huì)造成前臺(tái)鎖,保證了前臺(tái)速度。
三、主從復(fù)制的原理
主從復(fù)制中涉及的文件
主庫(kù): binlog
從庫(kù):
主從復(fù)制中涉及的三個(gè)線程
主庫(kù):
Binlog_Dump Thread :
從庫(kù):
SLAVE_IO_THREAD
SLAVE_SQL_THREAD
具體原理如圖所示:
1.從數(shù)據(jù)庫(kù)執(zhí)行change master to 命令(主數(shù)據(jù)庫(kù)的連接信息+復(fù)制的起點(diǎn))
2.從數(shù)據(jù)庫(kù)會(huì)將以上信息,記錄到master.info文件
3.從數(shù)據(jù)庫(kù)執(zhí)行 start slave 命令,立即開(kāi)啟SLAVE_IO_THREAD 和SLAVE_SQL_THREAD這兩個(gè)線程
4.從數(shù)據(jù)庫(kù) SLAVE_SQL_THREAD,讀取master.info文件中的信息獲取到IP,PORT,User,Pass,binlog的位置信息
5.從數(shù)據(jù)庫(kù)SLAVE_IO_THREAD請(qǐng)求連接主數(shù)據(jù)庫(kù),主數(shù)據(jù)庫(kù)專門(mén)提供一個(gè)SLAVE_IO_THREAD,負(fù)責(zé)和SLAVE_SQL_THREAD交互
6.SLAVE_IO_THREAD根據(jù)binlog的位置信息,請(qǐng)求主數(shù)據(jù)庫(kù)新的binlog
7.主數(shù)據(jù)庫(kù)通過(guò)Binlog_DUMP_Thread將最新的binlog,通過(guò)網(wǎng)絡(luò)TP給從數(shù)據(jù)庫(kù)的SALVE_IO_THREAD
8.SLAVE_IO_THREAD接收到新的binlog日志,存儲(chǔ)到TCP/IP緩存,立即返回ACK給主庫(kù),并更新master.info
9.SLAVE_IO_THREAD將TCP/IP緩存中數(shù)據(jù),轉(zhuǎn)儲(chǔ)到磁盤(pán)relaylog中.
10.SLAVE_SQL_THREAD讀取relay.info中的信息,獲取到上次已經(jīng)應(yīng)用過(guò)的relaylog的位置信息
11.SLAVE_SQL_THREAD會(huì)按照上次的位置點(diǎn)回放最新的relaylog,再次更新relay.info信息
12.從數(shù)據(jù)庫(kù)會(huì)自動(dòng)purge應(yīng)用過(guò)relay進(jìn)行定期清理
一旦主從復(fù)制構(gòu)建成功,主數(shù)據(jù)庫(kù)當(dāng)中發(fā)生了新的變化,都會(huì)通過(guò) slave_dump_THREAD發(fā)送信號(hào)給SLAVE_IO_THREAD,增強(qiáng)了主從復(fù)制的實(shí)時(shí)性.
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。