MySQL分布式架構(gòu)擴(kuò)縮容的初步設(shè)計(jì)
MySQL分布式架構(gòu)的擴(kuò)縮容是一個(gè)很有意思的話題。嚴(yán)格的說(shuō),我們所說(shuō)的這種架構(gòu)方案是一種偽分布式架構(gòu),我們就做下統(tǒng)稱(chēng)。重點(diǎn)是擴(kuò)縮容的思路上。
如果一套環(huán)境的主從完整,分為多個(gè)邏輯分片的情況下,大體是這樣的架構(gòu)。
這個(gè)架構(gòu)采用了4個(gè)物理分片,每個(gè)物理分片上有4個(gè)邏輯分片,總共有16個(gè)邏輯分片,也就意味著一張表被分為了16份。
對(duì)于擴(kuò)容來(lái)說(shuō),是優(yōu)先考慮主庫(kù)寫(xiě)入為主,所以我們的擴(kuò)容可以是2N的規(guī)模來(lái)擴(kuò)容,比如4個(gè)物理分片,可以擴(kuò)容為8個(gè)物理分片,大體的架構(gòu)和分布如下,這個(gè)時(shí)候從庫(kù)頂上來(lái)做了主庫(kù)。
從擴(kuò)容的角度來(lái)說(shuō),這也就是我們預(yù)期要做的事情,4個(gè)變8個(gè),8個(gè)變16個(gè)。一套環(huán)境按照設(shè)定的分片規(guī)模可以擴(kuò)容兩次。
而縮容怎么來(lái)做呢,我們需要考慮得更細(xì)致一些,所以我就截取了物理分片1的一個(gè)相對(duì)詳細(xì)的數(shù)據(jù)復(fù)制關(guān)系圖。
擴(kuò)容前,分片節(jié)點(diǎn)上的4個(gè)邏輯分片都是active狀態(tài),都可以寫(xiě)入數(shù)據(jù),從庫(kù)是inactive,只負(fù)責(zé)數(shù)據(jù)同步。
擴(kuò)容后,原本的db1,db2為active狀態(tài),而db3,db4在原來(lái)的Slave節(jié)點(diǎn)上是active狀態(tài)
這個(gè)基礎(chǔ)上,我們需要保證的就是將原本隔離的節(jié)點(diǎn)數(shù)據(jù)統(tǒng)一為Master端active狀態(tài)。這個(gè)過(guò)程說(shuō)起來(lái)容易,操作起來(lái)就是一個(gè)難點(diǎn)了。
這個(gè)事情如果相對(duì)平滑的完成,其實(shí)整個(gè)分布式集群的管理就不在話下了。