MyCat配置檔案詳解(二,Java黑科技實現原理揭祕
阿新 • • 發佈:2021-08-10
MyCat配置檔案詳解(二,Java黑科技實現原理揭祕
ruleRequired
該屬性用於指定表是否繫結分片規則, 如果配置為true, 但是沒有具體的rule, 程式會報錯。primaryKey
邏輯表對應真實表的主鍵
如: 分片規則是使用主鍵進行分片, 使用主鍵進行查詢時, 就會發送查詢語句到配置的所有的datanode
上; 如果使用該屬性配置真實表的主鍵, 那麼MyCat會快取主鍵與具體datanode
的資訊,再次使用主鍵查詢就不會進行廣播式查詢了, 而是直接將SQL傳送給具體的datanode
。type
該屬性定義了邏輯表的型別,目前邏輯表只有全域性表和普通表。
全域性表:type的值是global
, 代表 全域性表 。
普通表:無autoIncrement
mysql對非自增長主鍵,使用last_insert_id()
是不會返回結果的,只會返回0。所以,只有定義了自增長主鍵的表,才可以用last_insert_id()
返回主鍵值。 mycat提供了自增長主鍵功能,但是對應的mysql節點上資料表,沒有auto_increment
,那麼在mycat層呼叫last_insert_id()
也是不會返回結果的。
如果使用這個功能, 則最好配合資料庫模式的全域性序列。使用autoIncrement="true"
指定該表使用自增長主鍵,這樣MyCat才不會丟擲 "分片鍵找不到" 的異常。autoIncrement
的預設值為false。needAddLimit
指定表是否需要自動在每個語句的後面加上limit限制, 預設為true
。
參考資料:
《開源資料庫中介軟體MyCat實戰筆記》
快速入手通道:傳送簡信“MyCat資料”
免費獲取
二、dataNode 標籤
<dataNode name="dn1" dataHost="host1" database="db1" />
dataNode標籤中定義了MyCat中的資料節點, 也就是我們通常說的資料分片。一個dataNode標籤就是一個獨立的資料分片。
具體的屬性 :
屬性 | 含義 | 描述 |
---|---|---|
name | 資料節點的名稱 | 需要唯一 ; 在table標籤中會引用這個名字, 標識表與分片的對應關係 |
dataHost | 資料庫例項主機名稱 | 引用自 dataHost 標籤中name屬性 |
database | 定義分片所屬的資料庫 |
三、dataHost 標籤
<dataHost name="host1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1"
slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.192.147:3306" user="root" password="itcast"></writeHost>
</dataHost>
該標籤在MyCat邏輯庫中作為底層標籤存在, 直接定義了具體的資料庫例項、讀寫分離、心跳語句。
1.屬性
屬性 | 含義 | 描述 |
---|---|---|
name | 資料節點名稱 | 唯一標識, 供上層標籤使用 |
maxCon | 最大連線數 | 內部的writeHost、readHost都會使用這個屬性 |
minCon | 最小連線數 | 內部的writeHost、readHost初始化連線池的大小 |
balance | 負載均衡型別 | 取值0,1,2,3 ; 後面章節會詳細介紹; |
writeType | 寫操作分發方式 | 0 : 寫操作都轉發到第1臺writeHost, writeHost1掛了, 會切換到writeHost2上;1 : 所有的寫操作都隨機地傳送到配置的writeHost上 ; |
dbType | 後端資料庫型別 | mysql, mongodb , oracle |
dbDriver | 資料庫驅動 | 指定連線後端資料庫的驅動,目前可選值有 native和JDBC。native執行的是二進位制的MySQL協議,可以使用MySQL和MariaDB。其他型別資料庫需要使用JDBC(需要在MyCat/lib目錄下加入驅動jar) |
switchType | 資料庫切換策略 | 取值 -1,1,2,3 ; 後面章節會詳細介紹; |
2.子標籤heartbeat
配置MyCat與後端資料庫的心跳,用於檢測後端資料庫的狀態。heartbeat
用於配置心跳檢查語句。例如 : MySQL中可以使用 select user()
, Oracle中可以使用 select 1 from dual
等。
3.子標籤writeHost、readHost
指定後端資料庫的相關配置, 用於例項化後端連線池。 writeHost
指定寫例項, readHost
指定讀例項。
在一個dataHost
中可以定義多個writeHost和readHost。但是,如果writeHost
指定的後端資料庫宕機, 那麼這個writeHost繫結的所有readHost也將不可用。
屬性:
屬性名 | 含義 | 取值 |
---|---|---|
host | 例項主機標識 | 對於writeHost一般使用 *M1;對於readHost,一般使用 *S1; |
url | 後端資料庫連線地址 | 如果是native,一般為 ip:port ; 如果是JDBC, 一般為jdbc:mysql://ip:port/ |
user | 資料庫使用者名稱 | root |
password | 資料庫密碼 | itcast |
weight | 權重 | 在readHost中作為讀節點權重 |
usingDecrypt | 密碼加密 | 預設 0 否 , 1 是 |
學習分享,共勉
這裡是小編拿到的學習資源,其中包括“中高階Java開發面試高頻考點題筆記300道.pdf”和“Java核心知識體系筆記.pdf”檔案分享,內容豐富,囊括了JVM、鎖、併發、Java反射、Spring原理、微服務、Zookeeper、資料庫、資料結構等大量知識點。同時還有Java進階學習的知識筆記腦圖(內含大量學習筆記)!
資料都是免費提供的,整理不易,有需要的朋友可以轉發分享下,同時可以關注我,定期分享學習資源還會更新一些技術分享!
整理不易,有需要的朋友轉發支援下,感謝感謝!
Java核心知識體系筆記.pdf
中高階Java開發面試高頻考點題筆記300道.pdf
架構進階面試專題及架構學習筆記腦圖
Java架構進階學習視訊分享