Python知識(shí)分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
深入探索MySQL主從架構(gòu)與讀寫分離:提升數(shù)據(jù)安全和性能的實(shí)戰(zhàn)指南 PDF 下載
匿名網(wǎng)友發(fā)布于:2024-01-03 10:48:16
(侵權(quán)舉報(bào))
(假如點(diǎn)擊沒(méi)反應(yīng),多刷新兩次就OK!)

深入探索MySQL主從架構(gòu)與讀寫分離:提升數(shù)據(jù)安全和性能的實(shí)戰(zhàn)指南 PDF 下載  圖1

 

 

 

資料內(nèi)容:

2、讀寫分離配置
我們要注意,目前我們的這個(gè)MySQL主從集群是單向的,也就是只能從主服務(wù)同
步到從服務(wù),而從服務(wù)的數(shù)據(jù)表更是無(wú)法同步到主服務(wù)的。

所以,在這種架構(gòu)下,為了保證數(shù)據(jù)一致,通常會(huì)需要保證數(shù)據(jù)只在主服務(wù)上
寫,而從服務(wù)只進(jìn)行數(shù)據(jù)讀取。這個(gè)功能,就是大名鼎鼎的讀寫分離。但是這里要
注意下,mysql主從本身是無(wú)法提供讀寫分離的服務(wù)的,需要由業(yè)務(wù)自己來(lái)實(shí)現(xiàn)。
這也是我們后面要學(xué)的ShardingSphere的一個(gè)重要功能。
到這里可以看到,在MySQL主從架構(gòu)中,是需要嚴(yán)格限制從服務(wù)的數(shù)據(jù)
寫入的,一旦從服務(wù)有數(shù)據(jù)寫入,就會(huì)造成數(shù)據(jù)不一致。并且從服務(wù)在
執(zhí)行事務(wù)期間還很容易造成數(shù)據(jù)同步失敗。
如果需要限制用戶寫數(shù)據(jù),我們可以在從服務(wù)中將read_only參數(shù)的值設(shè)
為1( set global read_only=1; )。這樣就可以限制用戶寫入數(shù)據(jù)。
但是這個(gè)屬性有兩個(gè)需要注意的地方:
1、read_only=1設(shè)置的只讀模式,不會(huì)影響slave同步復(fù)制的功能。 所
以在MySQL slave庫(kù)中設(shè)定了read_only=1后,通過(guò) "show slave
status\G" 命令查看salve狀態(tài),可以看到salve仍然會(huì)讀取master上的日
志,并且在slave庫(kù)中應(yīng)用日志,保證主從數(shù)據(jù)庫(kù)同步一致;
2、read_only=1設(shè)置的只讀模式, 限定的是普通用戶進(jìn)行數(shù)據(jù)修改的操
作,但不會(huì)限定具有super權(quán)限的用戶的數(shù)據(jù)修改操作。 在MySQL中設(shè)
置read_only=1后,普通的應(yīng)用用戶進(jìn)行insert、update、delete等會(huì)
產(chǎn)生數(shù)據(jù)變化的DML操作時(shí),都會(huì)報(bào)出數(shù)據(jù)庫(kù)處于只讀模式不能發(fā)生數(shù)
據(jù)變化的錯(cuò)誤,但具有super權(quán)限的用戶,例如在本地或遠(yuǎn)程通過(guò)root用
戶登錄到數(shù)據(jù)庫(kù),還是可以進(jìn)行數(shù)據(jù)變化的DML操作; 如果需要限定
super權(quán)限的用戶寫數(shù)據(jù),可以設(shè)置super_read_only=0。另外 如果要
想連super權(quán)限用戶的寫操作也禁止,就使用"flush tables with read
lock;",這樣設(shè)置也會(huì)阻止主從同步復(fù)制!

3、其他集群方式
我們到這里搭建出了一個(gè)一主一從的MySQL主從同步集群,具有了數(shù)據(jù)同步的基
礎(chǔ)功能。而在生產(chǎn)環(huán)境中,通常會(huì)以此為基礎(chǔ),根據(jù)業(yè)務(wù)情況以及負(fù)載情況,搭建
更大更復(fù)雜的集群。
例如為了進(jìn)一步提高整個(gè)集群的讀能力,可以擴(kuò)展出一主多從。而為了減輕主節(jié)
點(diǎn)進(jìn)行數(shù)據(jù)同步的壓力,可以繼續(xù)擴(kuò)展出多級(jí)從的主從集群。
為了提高整個(gè)集群的高可用能力,可以擴(kuò)展出多主的集群。
我們也可以擴(kuò)展出互為主從的互主集群甚至是環(huán)形的主從集群,實(shí)現(xiàn)MySQL多活
部署。
搭建互主集群只需要按照上面的方式,在主服務(wù)上打開(kāi)一個(gè)slave進(jìn)程,并且指向
slave節(jié)點(diǎn)的binlog當(dāng)前文件地址和位置。