儲存2N倍擴容原理

weixin_34290000發表於2017-12-26

首先分享一個58同城非常帥氣的秒級資料擴容的方案。這個方案解決什麼問題呢?原來資料庫水平切分成N個庫,現在要擴容成2N個庫,解決的就是這個問題。

4049263-289457855e4a97c1

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

4049263-ead3bd55e418ffd0

第一個步驟提升從庫,底下一個從庫放到上面來(其實什麼動作都沒有做); 

第二個步驟修改配置,此時擴容完成,原來是2個分片,修改配置後變成4個分片,這個過程沒有資料的遷移。原來偶數的那一部分現在變成了兩個部分,一部分是0,一部分是2,奇數的部分現在變成1和3。0庫和2庫沒有資料衝突,只是擴容之後在短時間內雙主的可用性這個特性丟失掉了。

4049263-3f433571a3a93350

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

相關文章