溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

schema.xml的配置有哪些

發(fā)布時(shí)間:2021-10-13 15:41:40 來源:億速云 閱讀:162 作者:iii 欄目:編程語言

這篇文章主要講解了“schema.xml的配置有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“schema.xml的配置有哪些”吧!

schema.xml 配置介紹

schema 標(biāo)簽

<schema name="TESTDB" dataNode="dn1" checkSQLschema="false" sqlMaxLimit="100">

1、name:配置邏輯庫的名字(即mycat展示的數(shù)據(jù)庫實(shí)例名)

2、dataNode:用于配置該邏輯庫默認(rèn)的分片。沒有通過table標(biāo)簽配置的表,就會(huì)走到默認(rèn)的分片上。這里注意沒有配置在table標(biāo)簽的表,用工具查看是無法顯示的,但是可以正常使用。
如果沒有配置dataNode屬性,則沒有配置在table標(biāo)簽的表,是無法使用的。
通過mycat建表,而該表并沒有提前配置table標(biāo)簽,則mycat會(huì)找到默認(rèn)的dataNode,并把表建在默認(rèn)的dataNode上。如果沒有配置默認(rèn)dataNode,則mycat會(huì)報(bào)錯(cuò)。
如果該表有配置table標(biāo)簽,則表會(huì)分別在table標(biāo)簽指定的dataNode上建表。

3、checkSQLschema:boolean類型
當(dāng)前端執(zhí)行【select *from USERDB.tf_user;】時(shí)(表名前指定了mycat邏輯庫名)
兩種取值:
true:mycat會(huì)把語句轉(zhuǎn)換為【select * from tf_user;】
false:會(huì)報(bào)錯(cuò)

4、sqlMaxLimit:相當(dāng)于sql的結(jié)果集中,加上【limit N】。如果sql本身已經(jīng)指定limit,則以sql指定的為準(zhǔn)。
如果table標(biāo)簽的表,needAddLimit屬性配置為false,則該表的sql禁止自動(dòng)加上limit

table 標(biāo)簽

table標(biāo)簽為schema標(biāo)簽的子標(biāo)簽。
table標(biāo)簽用于定義Mycat的邏輯表,以及邏輯表的分片規(guī)則。
<table name="user" primaryKey="id" autoIncrement="true" dataNode="dn1,dn2" rule="hash-int" />

1、name:邏輯表的表名,同一個(gè)schema表名必須唯一

2、dataNode:定義這個(gè)邏輯表所屬的 dataNode,用英文逗號間隔,如:dataNode="dn1,dn2"

3、rule:該屬性用于指定邏輯表要使用的規(guī)則名字,規(guī)則名字在 rule.xml 中定義,必須與 tableRule 標(biāo)簽中 name 屬性屬性值一一對應(yīng)。

4、ruleRequired:該屬性用于指定表是否綁定分片規(guī)則,如果配置為 true,但沒有配置具體 rule 的話 ,程序會(huì)報(bào)錯(cuò)

5、primaryKey:指定該邏輯表對應(yīng)真實(shí)表的主鍵。MyCat會(huì)緩存主鍵(通過primaryKey屬性配置)與具體 dataNode的信息。當(dāng)分片規(guī)則使用非主鍵進(jìn)行分片時(shí),那么在使用主鍵進(jìn)行查詢時(shí),MyCat就會(huì)通過緩存先確定記錄在哪個(gè)dataNode上,然后再在該dataNode上執(zhí)行查詢。
如果緩存并沒有命中的話,還是會(huì)發(fā)送語句給所有的dataNode。
關(guān)于Mycat的主鍵緩存,其機(jī)制是:當(dāng)根據(jù)主鍵查詢的SQL語句第一次執(zhí)行時(shí),Mycat會(huì)對其結(jié)果進(jìn)行分析,確定該主鍵在哪個(gè)分片上,并進(jìn)行該主鍵到分片ID的緩存。通過連接MyCAT的9066管理端口,執(zhí)行show@@cache,可以顯示當(dāng)前緩存的使用情況。可在sql執(zhí)行前后的2個(gè)時(shí)間點(diǎn)執(zhí)行show @@cache,通過結(jié)果信息中的LAST_PUT和LAST_ACCESS列,判斷相應(yīng)表的緩存是否有被更新過。

6、type:該屬性定義了邏輯表的類型,目前邏輯表只有“全局表”和”普通表”兩種類型。
對應(yīng)的配置:
全局表:global。
普通表:不指定該值為 global 的所有表。

7、autoIncrement:表示該表使用自增長策略

8、subTables:分表配置,mycat1.6之后開始支持,但dataNode 在分表?xiàng)l件下只能配置一個(gè)。

9、needAddLimit:與schema標(biāo)簽的sqlMaxLimit配合使用,如果needAddLimit值為false,則語句不會(huì)加上limit

childTable 標(biāo)簽

childTable 標(biāo)簽用于定義 E-R 分片的子表。通過標(biāo)簽上的屬性與父表進(jìn)行關(guān)聯(lián)。

1、name:定義子表的表名

2、joinKey:插入子表的時(shí)候會(huì)使用這個(gè)列的值查找父表存儲(chǔ)的數(shù)據(jù)節(jié)點(diǎn)。

3、parentKey:該屬性指定的值一般為與父表建立關(guān)聯(lián)關(guān)系的列名。Mycat首先獲取 joinkey 的值,再通過 parentKey 屬性指定的列名產(chǎn)生查詢語句,通過執(zhí)行該語句得到父表存儲(chǔ)在哪個(gè)分片上。從而確定子表存儲(chǔ)的位置。

4、primaryKey:同table標(biāo)簽描述。

5、needAddLimit:同table標(biāo)簽描述。

dataNode 標(biāo)簽

<dataNode name="dn1" dataHost="localhost1" database="testdb01" />

1、name:指定分片的名字

2.、dataHost:定義該分片屬于哪個(gè)數(shù)據(jù)庫實(shí)例

3、database:定義該分片屬于哪個(gè)具體數(shù)據(jù)庫實(shí)例上的具體庫(即對應(yīng)mysql中實(shí)際的DB)

dataHost 標(biāo)簽

定義后端的數(shù)據(jù)庫主機(jī)
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

1、name:指定dataHost的名字

2、maxCon:指定每個(gè)讀寫實(shí)例連接池的最大連接。也就是說,標(biāo)簽內(nèi)嵌套的writeHost、 readHost 標(biāo)簽都會(huì)使用這個(gè)屬 性的值來實(shí)例化出連接池的最大連接數(shù)。

3、minCon:指定每個(gè)讀寫實(shí)例連接池的最小連接,初始化連接池的大小。

4、balance負(fù)載均衡類型:
(1)balance="0", 不開啟讀寫分離機(jī)制,所有讀操作都發(fā)送到當(dāng)前可用的writeHost 上。
(2)balance="1",全部的 readHost 與 stand by writeHost 參與 select 語句的負(fù)載均衡,簡單的說,當(dāng)雙主雙從模式(M1->S1,M2->S2,并且 M1 與 M2 互為主備),正常情況下,M2,S1,S2 都參與 select 語句的負(fù)載均衡。
(3)balance="2",所有讀操作都隨機(jī)的在 writeHost、 readhost 上分發(fā)。
(4)balance="3",所有讀請求隨機(jī)的分發(fā)到 wiriterHost 對應(yīng)的 readhost 執(zhí)行,writerHost 不負(fù)擔(dān)讀壓力,注意 balance=3 只在 1.4 及其以后版本有,1.3 沒有。

5、writeType:負(fù)載均衡策略:
(1)writeType="0", 所有寫操作發(fā)送到配置的第一個(gè) writeHost,第一個(gè)掛了切到還生存的第二個(gè)riteHost,重新啟動(dòng)后已切換后的為準(zhǔn),切換記錄在配置文件中:dnindex.properties.
(2)writeType="1",所有寫操作都隨機(jī)的發(fā)送到配置的 writeHost,1.5 以后廢棄不推薦。

6、dbType:指定后端連接的數(shù)據(jù)庫類型,目前支持二進(jìn)制的 mysql 協(xié)議,還有其他使用 JDBC 連接的數(shù)據(jù)庫。例如:mongodb、 oracle、 spark 等。

7、dbDriver:指定連接后端數(shù)據(jù)庫使用的 Driver,目前可選的值有 native 和 JDBC。使用native 的話,因?yàn)檫@個(gè)值執(zhí)行的是二進(jìn)制的 mysql 協(xié)議,所以可以使用 mysql 和 maridb。其他類型的數(shù)據(jù)庫則需要使用 JDBC 驅(qū)動(dòng)來支持。

8、switchType
-1 表示不自動(dòng)切換
1 默認(rèn)值,自動(dòng)切換
2 基于 MySQL 主從同步的狀態(tài)決定是否切換 心跳語句為 show slave status
3 基于 MySQL galary cluster 的切換機(jī)制(適合集群) 心跳語句為 show status like ‘wsrep%’.

9、tempReadHostAvailable:如果配置了這個(gè)屬性 writeHost 下面的 readHost 仍舊可用,默認(rèn) 0 可配置(0、 1)。

writeHost 標(biāo)簽 和 readHost 標(biāo)簽

1、host:用于標(biāo)識不同實(shí)例,一般 writeHost 我們使用M1,readHost 我們用S1。

2、url:后端實(shí)例連接地址,如果是使用 native 的 dbDriver,則一般為 address:port 這種形式。用 JDBC 或其他的dbDriver,則需要特殊指定。當(dāng)使用 JDBC 時(shí)則可以這么寫:jdbc:mysql://localhost:3306/。

3、user:實(shí)例數(shù)據(jù)庫用戶名

4、password:實(shí)例數(shù)據(jù)庫用戶密碼

5、weight 屬性:權(quán)重 配置在 readhost 中作為讀節(jié)點(diǎn)的權(quán)重(1.4 以后)

6、usingDecrypt:是否對密碼加密默認(rèn) 0 否 如需要開啟配置 1,同時(shí)使用加密程序?qū)γ艽a加密

感謝各位的閱讀,以上就是“schema.xml的配置有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對schema.xml的配置有哪些這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI