單機mysql帶來的問題:
1、mysql單機,扛不住併發
2、mysql單機磁碟容量快滿
3、mysql單錶資料量太大,sql執行越跑越慢
利用分庫分表將單機拆分成多機,帶來的好處。
1、可承受的併發增加數倍;
2、磁碟容量增加數倍,使用率降低;
3、單錶資料量縮小,sql語句執行速度加快。
資料庫中介軟體:用來做資料的分發。
有兩種:proxy類和client類
cobar :阿里開源,**中介軟體,不支援讀寫分離,儲存過程、跨庫join和分頁等,已經沒啥人用了。
tddl:**,client。不支援join、多表查詢,只支援curd,讀寫分離,用的人不多。
atlas:360開園,proxy。用的人不多。
sharding-jdbc:噹噹開源 client。sql語法支援的多,支援分庫分表、讀寫分離、分布式id生成等等。大部分公司的選擇。不要部署,運維成本低,但是各個系統都要耦合sharding-jdbc依賴。
mycat:proxy方案。勢頭很猛。
水平拆分:乙個表的資料分到多個庫的多個表裡去,表結構相同,資料不同。
垂直拆分:把乙個表的字段拆成多個表。每個庫表結構都不一樣。
根據主鍵拆分,根據時間拆分等。
(1)、長時間停機分庫分表
第一步,停掉系統,拒絕訪問,如晚上12點到凌晨3點進行維護,無法訪問。
第二步,啟動後台臨時程式,從舊的資料庫裡讀取資料,基於分庫分表中介軟體,將資料分離到其他庫表中去。
第三步,修改系統配置,通過資料庫中介軟體,將資料寫入到新庫中。
缺點:1、一定會停機幾個小時。
2、時間很趕,如果失敗,回滾**。
(2)、不停機雙寫方案
第一步,修改系統中寫庫**,同時寫入到老庫和新的分庫分表。
第二步,編寫乙個後台遷移工具,從老的庫里讀資料,寫入到新庫中去
第三步,遷移完成之後,去比較一下新舊庫表的資料,如果一模一樣,則遷移完成,否則繼續執行遷移。
第四步,新舊庫表資料無差異之後,將**中寫入舊的資料庫**刪掉,只寫新庫。
分庫分表中介軟體shardingSphere
1 支援分類 sharding jdbc 偏應用 靈活。sharding proxy 偏db,sql透明。2 用zookeeper配合sharding proxy完成資料理,實現配置註冊中心。3 預設的事務級別是local 支援三種 local xa 剛性事務 base 4 xa兩階段提交,預提交到...
常見的分庫分表中介軟體
比較常見的包括 cobar tddl atlas sharding jdbc mycat cobar 阿里 b2b 團隊開發和開源的,屬於 proxy 層方案,就是介於應用伺服器和資料庫伺服器之間。應用程式通過 jdbc 驅動訪問 cobar 集群,cobar 根據 sql 和分庫規則對 sql 做...
基於Calcite製作分庫分表中介軟體 方案3
上次提到模版結合新自定義關係表示式來實現有效的sql生成,那麼我們可不可以像方案1中借鑑calcite現成的功能來實現對之前的方案進行改進.答案是有的 直觀的改進方法有三種 目錄 基於calcite製作分庫分表中介軟體 方案3 表函式法 規則下推 自定義關係表示式 自定義關係表示式 自定義生成執行器...