mycat的分庫分表:垂直分庫、水平伸縮、垂直分表、水平分表
垂直分庫:主要解決寫負載問題;根據業務模塊以及要做聯合查詢的要求,將原本在一個數據庫中數據表切分成一個個的子集,將處在同一個子集的數據表移到另外的數據庫服務器上部署,或者在同一臺機器上的多個數據庫中部署,通過mycat將分散的數據庫抽象成一個邏輯庫,供應用訪問,這樣程序就像直接訪問一臺mysql的一個數據庫一樣了
實操步驟:
- 根據業務模塊以及查詢依賴關係劃分數據子集,確定哪些表合在一個新庫中
- 備份數據
- 通過mysql複製功能將數據子集依次遷移到新的機器上
- 配置MyCat
- 切換應用通過訪問MyCat訪問mysql
- 刪除多餘的表
- 停止mysql複製,將新機器上的mysql節點都變成可寫可讀的主節點
- 可以再單獨爲每個主節點都配置對應的從節點搭建多個主從複製架構,並配置各自的備寫節點,實現簡單的mysql高可用
水平伸縮 : 解決mysql集羣讀寫負載 通過增減mysql機器改變集羣的讀寫承載能力
垂直分表 : 解決不合理設計的表的讀寫負載 如果某張表的字段太多了,一條記錄存儲了太多內容,實際可以將一部分字段存儲到另一張新表上,降低mysql的IO負擔
水平分表:主要解決大表讀負載問題;有時數據表的記錄數目太大了,就算通過負載均衡可以在不同機器上訪問數據,效率也會很低,這個時候就要將大表切分成小表,分散存儲,每個小表負責一部分數據子集的讀寫,這就是水平切分,可以大幅度降低讀寫壓力