下文內(nèi)容主要給大家?guī)鞰ysql復(fù)制定義及解析,這里所講到的知識(shí),與書籍略有不同,都是創(chuàng)新互聯(lián)專業(yè)技術(shù)人員在與用戶接觸過程中,總結(jié)出來的,具有一定的經(jīng)驗(yàn)分享價(jià)值,希望給廣大讀者帶來幫助。
Master/Slave
Master: write/read,寫操作都在主節(jié)點(diǎn)上操作
Slaves: read,讀操作都是從節(jié)點(diǎn)這邊發(fā)出
為什么要復(fù)制?
冗余:promte(提升為主),異地災(zāi)備,可以通過人工或者工具程序(MHA)實(shí)現(xiàn)
擴(kuò)展:轉(zhuǎn)移一部分“讀”請(qǐng)求;
支援安全的備份操作;
測(cè)試需要;
主/從架構(gòu)實(shí)現(xiàn):
在主節(jié)點(diǎn)上啟用二進(jìn)制日志,從節(jié)點(diǎn)啟動(dòng)連接線程,請(qǐng)求主節(jié)點(diǎn)把這個(gè)事件發(fā)給自己一份,從節(jié)點(diǎn)上有一個(gè)線程叫IO Thread,主節(jié)點(diǎn)上啟用dump thread,IO Thread從節(jié)點(diǎn)將接受到的日志存儲(chǔ)到中繼日志,從云服務(wù)器上的SQL THread負(fù)責(zé)從中繼日志里生成一份數(shù)據(jù)。這樣的數(shù)據(jù)同步方式是異步。主服務(wù)器負(fù)責(zé)寫操作,從服務(wù)器負(fù)責(zé)讀操作。
主從有可能導(dǎo)致主從數(shù)據(jù)不一致。如主服務(wù)多線程進(jìn)程,從服務(wù)區(qū)是單線程進(jìn)程,有可能導(dǎo)致主從數(shù)據(jù)不一致,從服務(wù)器的數(shù)據(jù)可能會(huì)落后于主服務(wù)器,這個(gè)問題是不可避免的,只能盡早發(fā)現(xiàn),將不正確的數(shù)據(jù)手動(dòng)更改,如果數(shù)據(jù)差別很大,手動(dòng)恢復(fù)很難,可以在主服務(wù)器上做備份,把數(shù)據(jù)直接回復(fù)到從服務(wù)器上。
主服務(wù)器存到二進(jìn)制log,存到從服務(wù)器上是異步操作的。傳輸是單向的。但是這里有個(gè)問題,如果寫操作超出主服務(wù)器的性能,解決方法,使用雙主模型
主從復(fù)制的三種形式:同步復(fù)制,異步復(fù)制,半同步復(fù)制
同步復(fù)制:
雙主模型:寫操作都在本地寫,同步給另一個(gè)節(jié)點(diǎn),放到relay中。
主服務(wù)器都要啟動(dòng)中繼日志和二進(jìn)制日志,所有發(fā)給本節(jié)點(diǎn)的寫操作,都要記錄到二進(jìn)制日志中,并通過dump thread發(fā)給對(duì)端主服務(wù)器,對(duì)端主服務(wù)器通過io thread將收到的數(shù)據(jù)存儲(chǔ)到中繼日志中,并依靠sql thread實(shí)現(xiàn)重放。主節(jié)點(diǎn)實(shí)現(xiàn)了冗余。每個(gè)節(jié)點(diǎn)都可以讀和寫操作。這種操作可以降低讀請(qǐng)求,每個(gè)服務(wù)器負(fù)載一半的請(qǐng)求,但是寫操作的請(qǐng)求數(shù)量是一樣的,因?yàn)椋p主的服務(wù)器都要寫入一份數(shù)據(jù)。
利用中間件的讀寫分離器實(shí)現(xiàn)請(qǐng)求讀寫分離,中間件可以利用keepalive實(shí)現(xiàn)冗余。但是有了雙主模型,就不需要讀寫分離,只需要用haproxy或者nginx或者lvs來實(shí)現(xiàn)請(qǐng)求的四層調(diào)度將請(qǐng)求調(diào)度到不同服務(wù)器上即可。
mysql主從復(fù)制弊端可能運(yùn)行一段時(shí)間后,根據(jù)業(yè)務(wù)邏輯的不一樣,可能導(dǎo)致主從數(shù)據(jù)不一致,導(dǎo)致得到的數(shù)據(jù)不一致。該情況在數(shù)據(jù)要求強(qiáng)一致的情況下是不允許存在的。
在主服務(wù)器上,操作是多線程并行的,但是記錄到二進(jìn)制文件中是串行記錄,從服務(wù)器是單線程運(yùn)行獲取數(shù)據(jù),這樣導(dǎo)致從服務(wù)器拉取數(shù)據(jù)的速度落后于主服務(wù)器,導(dǎo)致了數(shù)據(jù)的差異,長(zhǎng)此以往會(huì)導(dǎo)致數(shù)據(jù)嚴(yán)重不一致。如果這里設(shè)置讀寫分離,可能導(dǎo)致從服務(wù)器上讀出的數(shù)據(jù)是錯(cuò)誤的。雙主模型同樣有這個(gè)問題。主從數(shù)據(jù)不一致,建議解決辦法是手動(dòng)修改數(shù)據(jù)。如果數(shù)據(jù)差別太大,將從服務(wù)器關(guān)閉,在主服務(wù)器上做備份,恢復(fù)到從服務(wù)器上。
異步復(fù)制:
一主多從;
一從一主;
級(jí)聯(lián)復(fù)制;一主復(fù)制給一從,同時(shí),這個(gè)從服務(wù)器又是其他服務(wù)器的主,其他從服務(wù)器到這個(gè)中繼服務(wù)器復(fù)制數(shù)據(jù),級(jí)聯(lián)的作用是降低主服務(wù)器的壓力。中間的這個(gè)從服務(wù)器要啟用二進(jìn)制日志和中繼日志,同時(shí),中間這臺(tái)從服務(wù)器僅起到過渡的作用,不需要保存數(shù)據(jù),因此將block hole引擎用于這個(gè)中間從服務(wù)器上,使得不會(huì)產(chǎn)生數(shù)據(jù)保存,但是中繼日志和二進(jìn)制日志都有正常保存,起到過渡的效果。
循環(huán)復(fù)制;多主模式下,采用循環(huán)復(fù)制,但是鏈條更長(zhǎng),可能導(dǎo)致數(shù)據(jù)落后嚴(yán)重。
雙主復(fù)制;
半同步復(fù)制:
一從多主模型:每個(gè)主服務(wù)器提供不同的數(shù)據(jù)庫,master只保證slaves中的一個(gè)操作成功,就返回,其他slave不管。這個(gè)功能,是由google為MYSQL引入的。
對(duì)于以上關(guān)于Mysql復(fù)制定義及解析,如果大家還有更多需要了解的可以持續(xù)關(guān)注我們創(chuàng)新互聯(lián)的行業(yè)推新,如需獲取專業(yè)解答,可在官網(wǎng)聯(lián)系售前售后的,希望該文章可給大家?guī)硪欢ǖ闹R(shí)更新。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+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)景需求。
新聞名稱:Mysql復(fù)制定義及解析-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://jinyejixie.com/article22/dhoccc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、定制開發(fā)、電子商務(wù)、用戶體驗(yàn)、軟件開發(fā)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容