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