更新時(shí)間:2021-01-13 17:03:29 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1594次
MySQL復(fù)制是指從一個(gè)mysql服務(wù)器(MASTER)將數(shù)據(jù)通過(guò)日志的方式經(jīng)過(guò)網(wǎng)絡(luò)傳送到另一臺(tái)或多臺(tái)mysql服務(wù)器(SLAVE),然后在slave上重放(replay或redo)傳送過(guò)來(lái)的日志,以達(dá)到和master數(shù)據(jù)同步的目的。MySQL復(fù)制屬于比較成熟的技術(shù),在MySQL數(shù)據(jù)庫(kù)中得到廣泛使用,下面我們一起來(lái)了解一下MySQL復(fù)制的優(yōu)點(diǎn)。
MySQL 內(nèi)建的復(fù)制功能是構(gòu)建大型、高性能應(yīng)用程序的基礎(chǔ)。將 MySQL 的數(shù)據(jù)分布到多個(gè)系統(tǒng)上去,這種分布的機(jī)制是通過(guò)將 MySQL 的某一臺(tái)主機(jī)的數(shù)據(jù)復(fù)制到其他主機(jī)(Slaves)上,并重新執(zhí)行一遍來(lái)實(shí)現(xiàn)的。在復(fù)制過(guò)程中,一臺(tái)服務(wù)器充當(dāng)主服務(wù)器,而另一臺(tái)或多臺(tái)其他服務(wù)器充當(dāng)從服務(wù)器。主服務(wù)器將更新寫入二進(jìn)制日志文件,并維護(hù)文件的一個(gè)索引以跟蹤日志循環(huán)。這些日志可以記錄發(fā)送到從服務(wù)器的更新。當(dāng)一個(gè)從服務(wù)器連接主服務(wù)器時(shí),它通知主服務(wù)器,從服務(wù)器在日志中讀取的最后一次成功更新的位置。從服務(wù)器接收從那時(shí)起發(fā)生的任何更新,然后封鎖并等待主服務(wù)器通知新的更新。
結(jié)合上述的MySQL復(fù)制的基本原理,總結(jié)出下面5個(gè)MySQL復(fù)制的優(yōu)點(diǎn):
1.提供了讀寫分離的能力。
MySQL復(fù)制讓所有的slave都和master保持?jǐn)?shù)據(jù)一致,因此外界客戶端可以從各個(gè)slave中讀取數(shù)據(jù),而寫數(shù)據(jù)則從master上操作。也就是實(shí)現(xiàn)了讀寫分離。
需要注意的是,為了保證數(shù)據(jù)一致性,寫操作必須在master上進(jìn)行。
通常說(shuō)到讀寫分離這個(gè)詞,立刻就能意識(shí)到它會(huì)分散壓力、提高性能。
2.為MySQL服務(wù)器提供了良好的伸縮(scale-out)能力。
由于各個(gè)slave服務(wù)器上只提供數(shù)據(jù)檢索而沒(méi)有寫操作,因此"隨意地"增加slave服務(wù)器數(shù)量來(lái)提升整個(gè)MySQL群的性能,而不會(huì)對(duì)當(dāng)前業(yè)務(wù)產(chǎn)生任何影響。
之所以"隨意地"要加上雙引號(hào),是因?yàn)槊總€(gè)slave都要和master建立連接,傳輸數(shù)據(jù)。如果slave數(shù)量巨多,master的壓力就會(huì)增大,網(wǎng)絡(luò)帶寬的壓力也會(huì)增大。
3.數(shù)據(jù)庫(kù)備份時(shí),對(duì)業(yè)務(wù)影響降到最低。
由于MySQL服務(wù)器群中所有數(shù)據(jù)都是一致的(至少幾乎是一致的),所以在需要備份數(shù)據(jù)庫(kù)的時(shí)候可以任意停止某一臺(tái)slave的復(fù)制功能(甚至停止整個(gè)mysql服務(wù)),然后從這臺(tái)主機(jī)上進(jìn)行備份,這樣幾乎不會(huì)影響整個(gè)業(yè)務(wù)(除非只有一臺(tái)slave,但既然只有一臺(tái)slave,說(shuō)明業(yè)務(wù)壓力并不大,短期內(nèi)將這個(gè)壓力分配給master也不會(huì)有什么影響)。
4.能提升數(shù)據(jù)的安全性。
這是顯然的,任意一臺(tái)MySQL服務(wù)器斷開,都不會(huì)丟失數(shù)據(jù)。即使是master宕機(jī),也只是丟失了那部分還沒(méi)有傳送的數(shù)據(jù)(異步復(fù)制時(shí)才會(huì)丟失這部分?jǐn)?shù)據(jù))。
5.數(shù)據(jù)分析不再影響業(yè)務(wù)。
需要進(jìn)行數(shù)據(jù)分析的時(shí)候,直接劃分一臺(tái)或多臺(tái)slave出來(lái)專門用于數(shù)據(jù)分析。這樣OLTP和OLAP可以共存,且?guī)缀醪粫?huì)影響業(yè)務(wù)處理性能。
MySQL復(fù)制的優(yōu)點(diǎn)決定了MySQL數(shù)據(jù)庫(kù)中復(fù)制技術(shù)存在的必然性,MySQL復(fù)制不僅僅對(duì)數(shù)據(jù)安全和業(yè)務(wù)提升有很大幫助,同時(shí)也為MySQL數(shù)據(jù)庫(kù)的發(fā)展提供了更多的可能。想要學(xué)好MySQL數(shù)據(jù)庫(kù),我們必須掌握MySQL中的許多核心技術(shù),在本站的MySQL教程中對(duì)這些MySQL核心技術(shù)都有很好的剖析,小伙伴們不要錯(cuò)過(guò)哦!
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)