分庫分表的中介軟體和遷移方案

2021-10-06 15:54:40 字數 1300 閱讀 4052

單機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 表函式法 規則下推 自定義關係表示式 自定義關係表示式 自定義生成執行器...