Mysql學習筆記---MySQL叢集架構之擴容方案
Mysql學習筆記—MySQL叢集架構之擴容方案
1.擴容場景描述
- 當系統使用者進入了高速增長期時,即便是對資料進行分庫分表,但資料庫的容量,還有表的資料量也總會達到天花板。當現有資料庫達到承受極限時,就需要增加新伺服器節點數量進行橫向擴容。
- 思考一下,橫向擴充套件會有什麼技術難度?
- 資料遷移問題
- 分片規則改變
- 資料同步、時間點、資料一致性
- 遇到上述問題時,我們可以使用以下兩種方案:
- 停機擴容
- 平滑擴容
2.停機擴容: 可用性還是受影響的
這是一種很多人初期都會使用的方案,尤其是初期只有幾臺資料庫的時候。停機擴容的具體步驟如下:
-
站點釋出一個公告,例如:“為了為廣大使用者提供更好的服務,本站點將在今晚00:00-2:00之間升級,給您帶來不便抱歉";
-
時間到了,停止所有對外服務;
-
新增n個資料庫,然後寫一個資料遷移程式,將原有x個庫的資料匯入到最新的y個庫中。比如分片規則由%x變為%y;
-
資料遷移完成,修改資料庫服務配置,原來x個庫的配置升級為y個庫的配置
-
重啟服務,連線新庫重新對外提供服務
-
回滾方案
:萬一資料遷移失敗,需要將配置和資料回滾,改天再掛公告。 -
優點
:簡單 -
缺點
:- 停止服務,缺乏高可用
- 程式設計師壓力山大,需要在指定時間完成
- 如果有問題沒有及時測試出來啟動了服務,執行後發現問題,資料會丟失一部分,難以回滾。
-
適用場景
:- 小型網站
- 大部分遊戲
- 對高可用要求不高的服務
2.平滑擴容
資料庫擴容的過程中,如果想要持續對外提供服務,保證服務的可用性,平滑擴容方案是最好的選擇。平滑擴容就是將資料庫數量擴容成原來的2倍,比如:由2個資料庫擴容到4個資料庫,具體步驟如下:
-
新增2個資料庫
-
配置雙主進行資料同步(先測試、後上線)
-
資料同步完成之後,配置雙主雙寫(同步因為有延遲,如果時時刻刻都有寫和更新操作,會存在不準確問題)
-
資料同步完成後,刪除雙主同步,修改資料庫配置,並重啟;
-
平滑擴容方案能夠實現n庫擴2n庫的平滑擴容,增加資料庫服務能力,降低單庫一半的資料量。其核心原理是:成倍擴容,避免資料遷移。
-
此時已經擴容完成,但此時的資料並沒有減少,新增的資料庫跟舊的資料庫一樣多的資料,此時還需要寫一個程式,清空資料庫中多餘的資料,如:
- User1去除 uid % 4 = 2的資料;
- User3去除 uid % 4 = 0的資料;
- User2去除 uid % 4 = 3的資料;
- User4去除 uid % 4 = 1的資料;
-
優點:
- 擴容期間,服務正常進行,保證高可用
- 相對停機擴容,時間長,專案組壓力沒那麼大,出錯率低
- 擴容期間遇到問題,隨時解決,不怕影響線上服務
- 可以將每個資料庫資料量減少一半
-
缺點:
- 程式複雜、配置雙主同步、雙主雙寫、檢測資料同步等
- 後期資料庫擴容,比如成千上萬,代價比較高
-
適用場景:
- 大型網站
- 對高可用要求高的服務
相關文章
- mysql學習筆記之快速搭建PXC叢集(Mycat分片)MySql筆記
- MySQL叢集架構:MHA+MySQL-PROXY+LVS實現MySQL叢集架構高可用/高效能MySql架構
- MySQL提升筆記(1):MySQL邏輯架構MySql筆記架構
- MySQL叢集搭建方案(PXC)MySql
- MySql學習筆記MySql筆記
- 構建MHA實現MySQL高可用叢集架構MySql架構
- MySQL優化學習筆記之explainMySql優化筆記AI
- MySQL優化學習筆記之索引MySql優化筆記索引
- Dubbo學習筆記(四)叢集容錯與負載均衡筆記負載
- 【記錄】MySQL 學習筆記MySql筆記
- [記錄] MySQL 學習筆記MySql筆記
- mysql學習筆記3MySql筆記
- MySQL學習筆記2MySql筆記
- MySQL學習筆記:鎖MySql筆記
- MySql學習筆記06MySql筆記
- Redis學習筆記(十八) 叢集(下)Redis筆記
- Redis學習筆記(十七) 叢集(上)Redis筆記
- ZooKeeper學習筆記一:叢集搭建筆記
- Redis學習筆記八:叢集模式Redis筆記模式
- mysql學習筆記之備份與恢復MySql筆記
- MySQL學習筆記:索引失效MySql筆記索引
- MySQL學習筆記之一MySql筆記
- mysql8.0學習筆記MySql筆記
- mysql高可用叢集之MMMMySql
- MySQL 8 大叢集架構的優缺點總結MySql架構
- Mysql高可用架構方案MySql架構
- Redis—叢集擴縮容Redis
- Redis學習筆記七:主從叢集Redis筆記
- spark學習筆記--叢集執行SparkSpark筆記
- Nginx學習筆記(反向代理&搭建叢集)Nginx筆記
- MYSQL學習筆記14: 函式MySql筆記函式
- MySQL學習筆記【基礎篇】MySql筆記
- MySQL高階學習筆記(二)MySql筆記
- MySQL學習筆記---入門使用MySql筆記
- MySQL資料庫學習筆記MySql資料庫筆記
- 一千行 MySQL 學習筆記MySql筆記
- 一千行MySQL學習筆記MySql筆記
- Mysql 優化(學習筆記二十)MySql優化筆記