主從復(fù)制

轉(zhuǎn)載自https://blog.csdn.net/weixin_43879074/article/details/88525006

一、什么是主從復(fù)制?

主從復(fù)制,是用來建立一個(gè)和主數(shù)據(jù)庫完全一樣的數(shù)據(jù)庫環(huán)境,稱為從數(shù)據(jù)庫,主數(shù)據(jù)庫一般是準(zhǔn)實(shí)時(shí)的業(yè)務(wù)數(shù)據(jù)庫。您看,像在mysql數(shù)據(jù)庫中,支持單項(xiàng)、異步賦值。在賦值過程中,一個(gè)服務(wù)器充當(dāng)主服務(wù)器,而另外一臺(tái)服務(wù)器充當(dāng)從服務(wù)器。此時(shí)主服務(wù)器會(huì)將更新信息寫入到一個(gè)特定的二進(jìn)制文件中。并會(huì)維護(hù)文件的一個(gè)索引用來跟蹤日志循環(huán)。這個(gè)日志可以記錄并發(fā)送到從服務(wù)器的更新中去。當(dāng)一臺(tái)從服務(wù)器連接到主服務(wù)器時(shí),從服務(wù)器會(huì)通知主服務(wù)器從服務(wù)器的日志文件中讀取最后一次成功更新的位置。然后從服務(wù)器會(huì)接收從哪個(gè)時(shí)刻起發(fā)生的任何更新,然后鎖住并等到主服務(wù)器通知新的更新

二、主從復(fù)制的作用(好處,或者說為什么要做主從)重點(diǎn)?

做數(shù)據(jù)的熱備,作為后備數(shù)據(jù)庫,主數(shù)據(jù)庫服務(wù)器故障后,可切換到從數(shù)據(jù)庫繼續(xù)工作,避免數(shù)據(jù)丟失。

架構(gòu)的擴(kuò)展。業(yè)務(wù)量越來越大,I/O訪問頻率過高,單機(jī)無法滿足,此時(shí)做多庫的存儲(chǔ),降低磁盤I/O訪問的評(píng)率,提高單個(gè)機(jī)器的I/O性能。

讀寫分離,使數(shù)據(jù)庫能支持更大的并發(fā)。在報(bào)表中尤其重要。由于部分報(bào)表sql語句非常的慢,導(dǎo)致鎖表,影響前臺(tái)服務(wù)。如果前臺(tái)使用master,報(bào)表使用slave,那么報(bào)表sql將不會(huì)造成前臺(tái)鎖,保證了前臺(tái)速度。

?1--在從服務(wù)器可以執(zhí)行查詢工作(即我們常說的讀功能),降低主服務(wù)器壓力;(主庫寫,從庫讀,降壓)

?2--在從主服務(wù)器進(jìn)行備份,避免備份期間影響主服務(wù)器服務(wù);(確保數(shù)據(jù)安全)

?3--當(dāng)主服務(wù)器出現(xiàn)問題時(shí),可以切換到從服務(wù)器。(提升性能)

三、主從復(fù)制的原理?

1.數(shù)據(jù)庫有個(gè)bin-log二進(jìn)制文件,記錄了所有sql語句。

2.我們的目標(biāo)就是把主數(shù)據(jù)庫的bin-log文件的sql語句復(fù)制過來。

3.讓其在從數(shù)據(jù)的relay-log重做日志文件中再執(zhí)行一次這些sql語句即可。

4.下面的主從配置就是圍繞這個(gè)原理配置

5.具體需要三個(gè)線程來操作:

1.binlog輸出線程:每當(dāng)有從庫連接到主庫的時(shí)候,主庫都會(huì)創(chuàng)建一個(gè)線程然后發(fā)送binlog內(nèi)容到從庫。在從庫里,當(dāng)復(fù)制開始的時(shí)候,從庫就會(huì)創(chuàng)建兩個(gè)線程進(jìn)行處理:

2.從庫I/O線程:當(dāng)START SLAVE語句在從庫開始執(zhí)行之后,從庫創(chuàng)建一個(gè)I/O線程,該線程連接到主庫并請(qǐng)求主庫發(fā)送binlog里面的更新記錄到從庫上。從庫I/O線程讀取主庫的binlog輸出線程發(fā)送的更新并拷貝這些更新到本地文件,其中包括relay log文件。

3.從庫的SQL線程:從庫創(chuàng)建一個(gè)SQL線程,這個(gè)線程讀取從庫I/O線程寫到relay log的更新事件并執(zhí)行。


可以知道,對(duì)于每一個(gè)主從復(fù)制的連接,都有三個(gè)線程。擁有多個(gè)從庫的主庫為每一個(gè)連接到主庫的從庫創(chuàng)建一個(gè)binlog輸出線程,每一個(gè)從庫都有它自己的I/O線程和SQL線程。

主從復(fù)制如圖 ?幫助理解:



四、主從復(fù)制的好處?

做數(shù)據(jù)的熱備,作為后備數(shù)據(jù)庫,主數(shù)據(jù)庫服務(wù)器故障后,可切換到從數(shù)據(jù)庫繼續(xù)工作,避免數(shù)據(jù)丟失。

架構(gòu)的擴(kuò)展。業(yè)務(wù)量越來越大,I/O訪問頻率過高,單機(jī)無法滿足,此時(shí)做多庫的存儲(chǔ),降低磁盤I/O訪問的評(píng)率,提高單個(gè)機(jī)器的I/O性能。

讀寫分離,使數(shù)據(jù)庫能支持更大的并發(fā)。在報(bào)表中尤其重要。由于部分報(bào)表sql語句非常的慢,導(dǎo)致鎖表,影響前臺(tái)服務(wù)。如果前臺(tái)使用master,報(bào)表使用slave,那么報(bào)表sql將不會(huì)造成前臺(tái)鎖,保證了前臺(tái)速度。


好處一:實(shí)現(xiàn)服務(wù)器負(fù)載均衡

通過服務(wù)器復(fù)制功能,可以在主服務(wù)器和從服務(wù)器之間實(shí)現(xiàn)負(fù)載均衡。即可以通過在主服務(wù)器和從服務(wù)器之間切分處理客戶查詢的負(fù)荷,從而得到更好地客戶相應(yīng)時(shí)間。通常情況下,數(shù)據(jù)庫管理員會(huì)有兩種思路。

一是在主服務(wù)器上只實(shí)現(xiàn)數(shù)據(jù)的更新操作。包括數(shù)據(jù)記錄的更新、刪除、新建等等作業(yè)。而不關(guān)心數(shù)據(jù)的查詢作業(yè)。數(shù)據(jù)庫管理員將數(shù)據(jù)的查詢請(qǐng)求全部 轉(zhuǎn)發(fā)到從服務(wù)器中。這在某些應(yīng)用中會(huì)比較有用。如某些應(yīng)用,像基金凈值預(yù)測(cè)的網(wǎng)站。其數(shù)據(jù)的更新都是有管理員更新的,即更新的用戶比較少。而查詢的用戶數(shù) 量會(huì)非常的多。此時(shí)就可以設(shè)置一臺(tái)主服務(wù)器,專門用來數(shù)據(jù)的更新。同時(shí)設(shè)置多臺(tái)從服務(wù)器,用來負(fù)責(zé)用戶信息的查詢。將數(shù)據(jù)更新與查詢分別放在不同的服務(wù)器 上進(jìn)行,即可以提高數(shù)據(jù)的安全性,同時(shí)也縮短應(yīng)用程序的響應(yīng)時(shí)間、提高系統(tǒng)的性能。

二是在主服務(wù)器上與從服務(wù)器切分查詢的作業(yè)。在這種思路下,主服務(wù)器不單單要完成數(shù)據(jù)的更新、刪除、插入等作業(yè),同時(shí)也需要負(fù)擔(dān)一部分查詢作 業(yè)。而從服務(wù)器的話,只負(fù)責(zé)數(shù)據(jù)的查詢。當(dāng)主服務(wù)器比較忙時(shí),部分查詢請(qǐng)求會(huì)自動(dòng)發(fā)送到從服務(wù)器重,以降低主服務(wù)器的工作負(fù)荷。當(dāng)然,像修改數(shù)據(jù)、插入數(shù) 據(jù)、刪除數(shù)據(jù)等語句仍然會(huì)發(fā)送到主服務(wù)器中,以便主服務(wù)器和從服務(wù)器數(shù)據(jù)的同步。


好處二:通過復(fù)制實(shí)現(xiàn)數(shù)據(jù)的異地備份

可以定期的將數(shù)據(jù)從主服務(wù)器上復(fù)制到從服務(wù)器上,這無疑是先了數(shù)據(jù)的異地備份。在傳統(tǒng)的備份體制下,是將數(shù)據(jù)備份在本地。此時(shí)備份 作業(yè)與數(shù)據(jù)庫服務(wù)器運(yùn)行在同一臺(tái)設(shè)備上,當(dāng)備份作業(yè)運(yùn)行時(shí)就會(huì)影響到服務(wù)器的正常運(yùn)行。有時(shí)候會(huì)明顯的降低服務(wù)器的性能。同時(shí),將備份數(shù)據(jù)存放在本地,也 不是很安全。如硬盤因?yàn)殡妷旱仍虮粨p壞或者服務(wù)器被失竊,此時(shí)由于備份文件仍然存放在硬盤上,數(shù)據(jù)庫管理員無法使用備份文件來恢復(fù)數(shù)據(jù)。這顯然會(huì)給企業(yè) 帶來比較大的損失。

而如果使用復(fù)制來實(shí)現(xiàn)對(duì)數(shù)據(jù)的備份,就可以在從服務(wù)器上對(duì)數(shù)據(jù)進(jìn)行備份。此時(shí)不僅不會(huì)干擾主服務(wù)氣的正常運(yùn)行,而且在備份過程中主服務(wù)器可以繼 續(xù)處理相關(guān)的更新作業(yè)。同時(shí)在數(shù)據(jù)復(fù)制的同時(shí),也實(shí)現(xiàn)了對(duì)數(shù)據(jù)的異地備份。除非主服務(wù)器和從服務(wù)器的兩塊硬盤同時(shí)損壞了,否則的話數(shù)據(jù)庫管理員就可以在最 短時(shí)間內(nèi)恢復(fù)數(shù)據(jù),減少企業(yè)的由此帶來的損失。


好處三:提高數(shù)據(jù)庫系統(tǒng)的可用性

數(shù)據(jù)庫復(fù)制功能實(shí)現(xiàn)了主服務(wù)器與從服務(wù)器之間數(shù)據(jù)的同步,增加了數(shù)據(jù)庫系統(tǒng)的可用性。當(dāng)主服務(wù)器出現(xiàn)問題時(shí),數(shù)據(jù)庫管理員可以馬上讓從服務(wù)器作為主服務(wù)器,用來數(shù)據(jù)的更新與查詢服務(wù)。然后回過頭來再仔細(xì)的檢查主服務(wù)器的問題。此時(shí)一般數(shù)據(jù)庫管理員也會(huì)采用兩種手段。

一是主服務(wù)器故障之后,雖然從服務(wù)器取代了主服務(wù)器的位置,但是對(duì)于主服務(wù)器可以采取的操作仍然做了一些限制。如仍然只能夠進(jìn)行數(shù)據(jù)的查詢,而 不能夠進(jìn)行數(shù)據(jù)的更新、刪除等操作。這主要是從數(shù)據(jù)的安全性考慮。如現(xiàn)在一些銀行系統(tǒng)的升級(jí),在升級(jí)的過程中,只能夠查詢余額而不能夠取錢。這是同樣的道理。

二是從服務(wù)器真正變成了主服務(wù)器。當(dāng)從服務(wù)器切換為主服務(wù)器之后,其地位完全與原先的主服務(wù)器相同。此時(shí)可以實(shí)現(xiàn)對(duì)數(shù)據(jù)的查詢、更新、刪除等操 作。為此就需要做好數(shù)據(jù)的安全性工作。即數(shù)據(jù)的安全策略,要與原先的主服務(wù)器完全相同。否則的話,就可能會(huì)留下一定的安全隱患。


四 從數(shù)據(jù)庫的讀的延遲問題了解嗎?如何解決?

主庫宕機(jī)后,數(shù)據(jù)可能丟失

?? ?從庫只有一個(gè)sql Thread,主庫寫壓力大,復(fù)制很可能延時(shí)

解決方法:

半同步復(fù)制—解決數(shù)據(jù)丟失的問題

?? ?并行復(fù)制—-解決從庫復(fù)制延遲的問題

https://blog.csdn.net/darkangel1228/article/details/80003967

主從復(fù)制和主主復(fù)制區(qū)別?

最大區(qū)別是 主從是對(duì)主操作數(shù)據(jù),從會(huì)實(shí)時(shí)同步數(shù)據(jù)。反之對(duì)從操作,主不會(huì)同步數(shù)據(jù),還有可能造成數(shù)據(jù)紊亂,導(dǎo)致主從失效。 主主則是無論對(duì)那一臺(tái)操作,另一個(gè)都會(huì)同步數(shù)據(jù)。一般用作高容災(zāi)方案?

加油噢?。?!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. MySQL集群企業(yè)級(jí)架構(gòu)方案 在實(shí)際生產(chǎn)環(huán)境中,一主多從的數(shù)據(jù)庫環(huán)境是最常采用的數(shù)據(jù)庫架構(gòu),那么應(yīng)該怎么分配...
    阿喪小威閱讀 863評(píng)論 0 1
  • 本篇就一下方面展開分析 如何使用主從復(fù)制? 主從復(fù)制的原理(重點(diǎn)是全量復(fù)制和部分復(fù)制、以及心跳機(jī)制) 實(shí)際應(yīng)用中需...
    lucode閱讀 1,066評(píng)論 0 5
  • 1. MySQL主從復(fù)制實(shí)踐 1. 主從復(fù)制實(shí)踐準(zhǔn)備 1.1 主從復(fù)制數(shù)據(jù)庫實(shí)踐環(huán)境準(zhǔn)備 準(zhǔn)備兩臺(tái)服務(wù)器,每臺(tái)機(jī)器...
    阿喪小威閱讀 559評(píng)論 1 1
  • MySQL Replication 主從復(fù)制(也稱 AB 復(fù)制)允許將來自一個(gè)MySQL數(shù)據(jù)庫服務(wù)器(主服務(wù)器)的...
    你笑的那么美丶閱讀 509評(píng)論 0 0
  • MySQL Replication 主從復(fù)制(也稱 AB 復(fù)制)允許將來自一個(gè)MySQL數(shù)據(jù)庫服務(wù)器(主服務(wù)器)的...
    紅衣漫漫閱讀 540評(píng)論 0 0

友情鏈接更多精彩內(nèi)容