1. 程式人生 > >mysql擴展性架構實踐N庫到2N 庫的擴容,2變4、4變8

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

str 新的 mage new 不能 可用性 可用 news 秒級

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

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

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

取模計算器


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

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

技術分享圖片

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

技術分享圖片

第一個步驟提升從庫

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

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

技術分享圖片

第三個步驟還要做一些收尾操作:把舊的雙主給解除掉,為了保證可用性增加新的雙主同步,原來擁有全部的數據,現在只為一半的數據提供服務了,我們把多余的數據刪除掉,結尾這三個步驟可以事後慢慢操作。整個擴容在過程在第二步提升從庫,修改配置其實就秒級完成了,非常的帥氣。

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

f

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