MyCat原理與應用

2021-10-12 03:41:59 字數 3108 閱讀 3643

mycart是資料庫中介軟體(是一類連線軟體元件 和應用的計算機軟體,以便於軟體各部件之間的溝通

例子: nginx, web中介軟體

資料庫中介軟體:連線php應用程式和資料庫的工具)

2.高訪問量高併發對資料庫壓力,一般都會部署多台伺服器來抵禦併發訪問需自己做流量分配

3.資料庫儲存大量的資料,分庫分表後,不方便維護管理,用它來解決

總結:遮蔽底層複雜性,方便快速開發

1.讀寫分離

2.分庫分表的場景

3.多租戶場景

4.資料統計系統

5.hbase的一種替代方案

6.同樣方式查詢多種資料庫的場景

通過**的方式來獲取資料內容,它攔截使用者傳送過來的 sql 語句,首先對 sql 語句做了一些特定的分析:如分片分析、路由分析、讀寫分離分析、快取分析等,然後將此 sql 發往後端的真實資料庫,並將返回的結果做適當的處 理,最終再返回給使用者。

1.schema:邏輯庫,與mysql中的database(資料庫)對應,乙個邏輯庫中定義了所包括的table。 

2.table:邏輯表,即物理資料庫中儲存的某一張表,與傳統資料庫不同,這裡的**需要宣告其所儲存的邏輯資料節點datanode。在此可以指定表的分片規則。

3.datanode:mycat的邏輯資料節點,是存放table的具體物理節點,也稱之為分片節點,通過datasource來關聯到後端某個具體資料庫上

分片表: 是指原有的很大資料的表,需要切分到多個資料庫的表

非分片表: 即不需要進行資料切分的表

server.xml

用於定義系統配置

用於定義連線mycat的使用者

schema.xml

定義邏輯庫、表

定義分片節點

定義分片節點的物理資料來源

rule.xml

定義表使用的分片規則

定義分片演算法

全域性表

類似字典表,儲存與業務表之間可能有關係,可以理解為"標籤" ,這些表基本上很少變動,可以根據主鍵id進行快取、

全域性表特性:

1.變動不頻繁;

2.資料量總體變化不大;

3.資料規模不大,很少有超過數十萬條記錄

全域性表操作特點:

1.全域性表的插入、更新操作會實時在所有節點上執行,保持各個分片的資料一致性

2.全域性表的查詢操作,只從乙個節點獲取

3.全域性表可以跟任何乙個表進行join操作

e-r分片:子表的記錄與所關聯的父表記錄存放在同乙個資料分片上,即子表依賴於父表

垂直拆分:按照業務需求把資料拆分到不同資料節點

parentkey= "id"/>  

水平拆分:根據分片規則,把資料拆分到不同分片表下

父子表關係: goods.id =order_info.order_id

joinkey: 分片表的外來鍵字段 primarykey: 分片表主鍵

parentkey:父表的外來鍵字段

hash:

1.取模 mod-long

2.一致性 hash murmur

3.取模範圍約束 sharding-by-pattern

4.crc32slot 分片演算法 crc32solt 是有狀態分片演算法的實現之一,資料自5.動遷移方案設計

範圍:1.範圍約定 rang-long (提前規劃好分片字段某個範圍屬於哪個分片)

2.分片列舉 hash-int

3.範圍求模分片 rang-mod

1.按日期(天)分片 sharding-by-date

2.按單月小時拆分 sharding-by-hour

3.日期範圍 hash 分片 range-date-hash

4.冷熱資料分片: sharding-by-hotdate

讀負載:

讀寫分離配置在writehost下進行處理:

balance 負載均衡屬性,目前的取值有 3 種:

1. balance="0", 不開啟讀寫分離機制,所有讀操作都傳送到當前可用的 writehost 上

2. balance="1", 全部的 readhost 與 stand by writehost 參與 select 語句的負載均衡,簡單的說,當雙主雙從模式(m1->s1,m2->s2,並且 m1 與 m2 互為主備),正常情況下,m2,s1,s2 都參與 select 語句的負載均衡

3. balance="2",所有讀操作都隨機的在 writehost、readhost 上分發

4. balance="3",所有讀請求隨機的分發到 wiriterhost 對應的 readhost 執行,writerhost 不負擔讀壓力

注意 balance=3 只在 1.4 及其以後版本有,1.3 沒有

寫負載:

負載均衡型別,目前的取值有 3 種:

1. writetype="0", 所有寫操作傳送到配置的第乙個 writehost,第乙個掛了切到還生存的第二個 writehost,重新啟動後已切換後的為準,切換記錄在配置檔案中:dnindex.properties

2. writetype="1",所有寫操作都隨機的傳送到配置的 writehost,1.5 以後廢棄不推薦

3. writetype= "2", 基於 mysql 主從同步的狀態決定是否切換。

mycat系列 mycat原理

mycat的原理並不複雜,複雜的是 如果 也不複雜,那麼早就成為乙個傳說了。mycat的原理中最重要的乙個動詞是 攔截 它攔截了使用者傳送過來的sql語句,首先對sql語句做了一些特定的分析 如分片分析 路由分析 讀寫分離分析 快取分析等,然後將此sql發往後端的真實資料庫,並將返回的結果做適當的處...

Mycat原理 應用場景

mycat的原理並不複雜,複雜的是 如果 也不複雜,那麼早就成為乙個傳說了。mycat的原理中最重要的乙個動詞是 攔截 它攔截了使用者傳送過來的sql語句,首先對sql語句做了一些特定的分析 如分 片分析 路由分析 讀寫分離分析 快取分析等,然後將此sql發往後端的真實資料庫,並將返回的結果做適當的...

Mycat原理 應用場景

mycat原理 mycat的原理並不複雜,複雜的是 如果 也不複雜,那麼早就成為乙個傳說了。mycat的原理中最重要的乙個動詞是 攔截 它攔截了使用者傳送過來的sql語句,首先對sql語句做了一些特定的分析 如分 片分析 路由分析 讀寫分離分析 快取分析等,然後將此sql發往後端的真實資料庫,並將返...