溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Mysql數(shù)據(jù)庫讀寫分離

發(fā)布時(shí)間:2020-07-22 15:11:57 來源:網(wǎng)絡(luò) 閱讀:463 作者:梁十八 欄目:MySQL數(shù)據(jù)庫

Mysql數(shù)據(jù)庫讀寫分離

Mysql數(shù)據(jù)庫讀寫分離


Mysql數(shù)據(jù)庫讀寫分離

(先對(duì)數(shù)據(jù)庫操作進(jìn)行讀寫分離,使得具有master角色的主服務(wù)器主要用于執(zhí)行寫操作,這樣就能大大減少主服務(wù)器由于讀操作而產(chǎn)生的負(fù)載過大的問題。讀交給slave。對(duì)于多臺(tái)讀服務(wù)器,還要把讀操作的壓力分?jǐn)偟讲煌膕lave服務(wù)器上。通常來說,讀寫分離和多臺(tái)slave服務(wù)器的讀負(fù)載均衡也是兩個(gè)不同的問題,也要分別進(jìn)行解決。先讀寫分離,再將讀操作平均分?jǐn)偟礁鱯lave服務(wù)器)

redis和memcache差距不大,還具有更多的數(shù)據(jù)類型,還能持久化,主從復(fù)制,集群等功能


Mysql數(shù)據(jù)庫讀寫分離

Mysql數(shù)據(jù)庫讀寫分離

(比如庫存的查詢就必須在主庫上進(jìn)行,如果從庫上就可能出現(xiàn)超賣的情況。因此,不是什么查詢都要進(jìn)行讀寫分離的。所以,由開發(fā)人員自行判斷比較靈活)


還可以通過數(shù)據(jù)庫中間層完成讀寫分離(如mysql proxy、maxscale、one proxy、proxySQL等):

Mysql數(shù)據(jù)庫讀寫分離

Mysql數(shù)據(jù)庫讀寫分離

Mysql數(shù)據(jù)庫讀寫分離

(通過中間層對(duì)sql語句的解析,如果是select操作,則發(fā)送到從服務(wù)器處理,非select操作,全發(fā)送到主服務(wù)器處理。對(duì)于存儲(chǔ)過程這種無法通過調(diào)用語法分析出是讀操作還是寫操作的sql就只能全部由主數(shù)據(jù)庫服務(wù)器去完成。由于存儲(chǔ)過程可能很大一部分只是進(jìn)行查詢處理,這無疑加大了主數(shù)據(jù)庫服務(wù)器的負(fù)載。雖然使用中間層很方便,但也會(huì)付出一些代價(jià))

(由于讀寫分離是通過中間層自動(dòng)進(jìn)行的,而中間層無法區(qū)分哪些是對(duì)延遲敏感的,哪些不敏感,所以無法把對(duì)延遲敏感的查詢自動(dòng)分配到主庫上執(zhí)行,而要實(shí)現(xiàn)這些功能就要在查詢語句中加入提示的關(guān)鍵字,而增加提示不得不對(duì)原來程序進(jìn)行修改,這樣就失去了對(duì)程序透明的好處了)


常用的讀服務(wù)器負(fù)載均衡方式:

Mysql數(shù)據(jù)庫讀寫分離


對(duì)于數(shù)據(jù)庫服務(wù)器來說,讀負(fù)載和寫負(fù)載是兩個(gè)完全不同的問題,所以,對(duì)于讀負(fù)載和寫負(fù)載要分開對(duì)待,因?yàn)閷懖僮髦荒茉趍aster上進(jìn)行,而讀操作可以在master上,也可以在slave上,因此,相對(duì)寫負(fù)載,解決讀負(fù)載更加容易。

Mysql數(shù)據(jù)庫讀寫分離

(lvs是工作在網(wǎng)絡(luò)協(xié)議的四層上的,只進(jìn)行流量分發(fā),不會(huì)對(duì)數(shù)據(jù)包內(nèi)容進(jìn)行解析,性能強(qiáng),對(duì)內(nèi)存和cpu消耗低,當(dāng)然,由于不會(huì)對(duì)數(shù)據(jù)進(jìn)行解析,所以也不會(huì)知道數(shù)據(jù)包中sql的具體內(nèi)容,自然不能做讀寫分離

(lvs只分發(fā)請(qǐng)求,流量并不從他本身出去,所以無流量消耗,這點(diǎn)就保障了io性能不會(huì)受到大流量影響)

Mysql數(shù)據(jù)庫讀寫分離


Mysql數(shù)據(jù)庫讀寫分離


主從復(fù)制流程就不貼出來了...


在.100和.101服務(wù)器都安裝lvs管理工具:

Mysql數(shù)據(jù)庫讀寫分離

加載ipvs模塊(所有參加lvs集群的三臺(tái)服務(wù)器都要安裝):

Mysql數(shù)據(jù)庫讀寫分離

lvs腳本的編寫:

????????先看下slave(.101服務(wù)器)上的腳本:

????????????????Mysql數(shù)據(jù)庫讀寫分離

????????????????Mysql數(shù)據(jù)庫讀寫分離

????????????????(注意,這個(gè)腳本要有可執(zhí)行權(quán)限)

????????????????執(zhí)行腳本:

????????????????Mysql數(shù)據(jù)庫讀寫分離

????????????????查看:

????????????????Mysql數(shù)據(jù)庫讀寫分離

????????同樣在.102上也要執(zhí)行:

????????????????Mysql數(shù)據(jù)庫讀寫分離

????????????? ? 查看:

????????????????Mysql數(shù)據(jù)庫讀寫分離

????????.100上的keepalived配置:

????????????????Mysql數(shù)據(jù)庫讀寫分離

????????????????Mysql數(shù)據(jù)庫讀寫分離

????????????????查看check_slave腳本:

????????????????Mysql數(shù)據(jù)庫讀寫分離

????????????????Mysql數(shù)據(jù)庫讀寫分離

????????????????......

????????.100上建立lvs可操作的賬號(hào):

????????????????Mysql數(shù)據(jù)庫讀寫分離

????????????????

????????未完待續(xù)......

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI