1. 程式人生 > 其它 >MyCat配置檔案詳解(二,Java黑科技實現原理揭祕

MyCat配置檔案詳解(二,Java黑科技實現原理揭祕

MyCat配置檔案詳解(二,Java黑科技實現原理揭祕
  1. ruleRequired
    該屬性用於指定表是否繫結分片規則, 如果配置為true, 但是沒有具體的rule, 程式會報錯。
  2. primaryKey
    邏輯表對應真實表的主鍵
    如: 分片規則是使用主鍵進行分片, 使用主鍵進行查詢時, 就會發送查詢語句到配置的所有的datanode上; 如果使用該屬性配置真實表的主鍵, 那麼MyCat會快取主鍵與具體datanode的資訊,再次使用主鍵查詢就不會進行廣播式查詢了, 而是直接將SQL傳送給具體的datanode
  3. type
    該屬性定義了邏輯表的型別,目前邏輯表只有全域性表普通表
    全域性表:type的值是 global , 代表 全域性表
    普通表:無
  4. autoIncrement
    mysql對非自增長主鍵,使用last_insert_id() 是不會返回結果的,只會返回0。所以,只有定義了自增長主鍵的表,才可以用last_insert_id()返回主鍵值。 mycat提供了自增長主鍵功能,但是對應的mysql節點上資料表,沒有auto_increment,那麼在mycat層呼叫last_insert_id()也是不會返回結果的。
    如果使用這個功能, 則最好配合資料庫模式的全域性序列。使用 autoIncrement="true" 指定該表使用自增長主鍵,這樣MyCat才不會丟擲 "分片鍵找不到" 的異常。 autoIncrement 的預設值為false。
  5. 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架構進階學習視訊分享