mysql擴展性架構實踐N庫到2N 庫的擴容,2變四、4變8

mysql擴展性架構實踐N庫到2N 庫的擴容,2變四、4變8php

http://geek.csdn.net/news/detail/52070
58同城 沈劍mysql

 

http://www.99cankao.com/algebra/modulo-calculator.phpsql

取模計算器數據庫

 


擴展性也是架構師在作數據庫架構設計的時候須要考慮的一點。首先分享一個58同城很是帥氣的秒級數據擴容的方案。這個方案解決什麼問題呢?原來數據庫水平切分紅N個庫,如今要擴容成2N個庫,解決的就是這個問題。架構

一開始除以2取模 0或者1阿里雲

假設原來分紅兩個庫,假設按照hash的方式分片。如上圖,分爲奇數庫和偶數庫。.net

第一個步驟提高從庫,底下一個從庫放到上面來(其實什麼動做都沒有作);
第二個步驟修改配置此時擴容完成,原來是2個分片,修改配置後變成4個分片,這個過程沒有數據的遷移。原來偶數的那一部分如今變成了兩個部分,一部分是0,一部分是2,奇數的部分如今變成1和3。0庫和2庫沒有數據衝突,只是擴容以後在短期內主從的可用性這個特性丟失掉了。架構設計

擴展以後除以4取模 ,0,1,2,3設計

第三個步驟還要作一些收尾操做:把舊的主從給解除掉,爲了保證可用性增長新的主從同步,原來擁有所有的數據,如今只爲一半的數據提供服務了,咱們把多餘的數據刪除掉,結尾這三個步驟能夠過後慢慢操做。整個擴容在過程在第二步提高從庫,修改配置其實就秒級完成了,很是的帥氣。blog

這個方案的缺點是隻能實現N庫到2N 庫的擴容,2變四、4變8,不能實現2庫變3庫,2庫變5庫的擴容。

 

 



沈劍這個方案不能秒級擴容


第一個步驟提高從庫,底下一個從庫放到上面來(其實什麼動做都沒有作)
第二個步驟原來是2個分片,如今變成4個分片,這個過程沒有數據的遷移。原來偶數的那一部分如今變成了兩個部分,一部分是0,一部分是2,奇數的部分如今變成1和3,把舊的主從給解除掉,0庫和2庫,1庫和3庫都有數據衝突,須要先把多餘的數據刪除掉
第三個步驟爲了保證可用性增長新的主從同步,修改配置,此時擴容完成

 

阿里雲HybridDB for MySQL 在線加分片
阿里雲HybridDB for MySQL 在線加分片應該是在擴容時記錄下對數據庫的修改,直至刪除數據完畢,應用新的路由規則,xtrabackup備份主庫生成從庫,增長新的主從同步

 



擴容其實就是一個刪數據過程而不是遷移數據過程,理論上能夠無限橫向擴展

2庫擴3庫能夠擴,問題1:數據傾斜 0,1,2三個分片,1這個分片數據量最多  問題2:原本磁盤空間不夠要擴容,若是不增長3這個分片,那麼1這個分片沒法再插入數據,由於磁盤空間不足






 

f

相關文章
相關標籤/搜索