溫馨提示×

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

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

mycat中datanode和datahost如何配置

發(fā)布時(shí)間:2021-11-06 13:51:27 來源:億速云 閱讀:673 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

這篇文章主要介紹了mycat中datanode和datahost如何配置,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1、dataNode 標(biāo)簽
        <dataNode name="dn1" dataHost="db1" database="db1" />
        <dataNode name="dn2" dataHost="db2" database="db1" />
        <dataNode name="dn3" dataHost="db3" database="db1" />
    dataNode 標(biāo)簽定義了MyCat中的數(shù)據(jù)節(jié)點(diǎn),也就是我們通常所說的數(shù)據(jù)分片。一個(gè)datanode標(biāo)簽就是一個(gè)獨(dú)立的數(shù)據(jù)分片。
    例子中所表述的意思為:使用名字為db1數(shù)據(jù)庫(kù)實(shí)例上的db1物理數(shù)據(jù)庫(kù),這就組成一個(gè)數(shù)據(jù)分片,最后,我們使用名字dn1標(biāo)識(shí)這個(gè)分片。
    
dataNode 標(biāo)簽癿相關(guān)屬性:
------------------------------
|屬性名   |   值   | 數(shù)量限制|
|----------------------------|
|name     | String | (1)     |
|----------------------------|
|dataHost | String | (1)     |
|----------------------------|
|database | String | (1)     |
------------------------------
6.5.1  name 屬性
定義數(shù)據(jù)節(jié)點(diǎn)的名字,這個(gè)名字需要是唯一的,我們需要在table標(biāo)簽上應(yīng)用這個(gè)名字,來建立表與分片對(duì)應(yīng)的關(guān)系。
6.5.2  dataHost 屬性
該屬性用于定義該分片屬于哪個(gè)數(shù)據(jù)庫(kù)實(shí)例的,屬性值是引用datahost標(biāo)簽上定義的name屬性。
6.5.3  database 屬性
該屬性用于定義該分片屬性哪個(gè)具體數(shù)據(jù)庫(kù)實(shí)例上的具體庫(kù),因?yàn)檫@里使用兩個(gè)維度來定義分片,就是:實(shí)例+具體的庫(kù)。因?yàn)槊總€(gè)哭上建立的表和表結(jié)構(gòu)是一樣的。所以這樣做就可以輕松的對(duì)表進(jìn)行水平拆分。


6.6  dataHost 標(biāo)簽
作為schema.xml中最后一個(gè)標(biāo)簽,該標(biāo)簽在mycat邏輯庫(kù)中也是作為最底層的標(biāo)簽存在,直接定義了具體的數(shù)據(jù)庫(kù)實(shí)例、讀寫分離配置和心跳語句?,F(xiàn)在我們就解析下這個(gè)標(biāo)簽。
<dataHost name="db1" maxCon="1000" minCon="10" balance="0"
        writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="db1:3306" user="root"  password="zdsoft">
                <!-- can have multi read hosts -->
                <!--<readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" />-->
        </writeHost>
                <!--<writeHost host="hostS1" url="localhost:3316" user="root"-->
                <!--password="123456" />-->
        <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>


dataHost 標(biāo)簽的相關(guān)屬性:
--------------------------------
|屬性名    |  值     | 數(shù)量限制|
|-------------------------------
|name      | String  |  (1)    |
|-------------------------------
|maxCon    | Integer |  (1)    |
|-------------------------------
|minCon    | Integer |  (1)    |
|-------------------------------
|balance   | Integer |  (1)    |
|-------------------------------
|writeType | Integer |  (1)    |
|-------------------------------
|dbType    | String  |  (1)    |
|-------------------------------
|dbDriver  | String  |  (1)    |
--------------------------------
6.6.1  name 屬性
唯一標(biāo)識(shí)datahost標(biāo)簽,供上層的標(biāo)簽使用。 
6.6.2  maxCon 屬性
指定每個(gè)讀寫實(shí)例連接池最大連接。也就是說,標(biāo)簽內(nèi)嵌套的writehost、readhost標(biāo)簽都會(huì)使用這個(gè)屬性的只來實(shí)例化出連接池的最大連接數(shù)。
6.6.3  minCon 屬性
指定每個(gè)讀寫實(shí)例連接池的最小連接,初始化連接池的大小。
6.6.4  balance 屬性
負(fù)載均衡類型,目前的取值有3種:
1. balance="0", 不開啟讀寫分離機(jī)制,所有讀操作都發(fā)送到當(dāng)前可用的writehost上。 
2. balance="1",全部的readhost與standby wtirehost參與select語句的負(fù)載均衡,簡(jiǎn)單的說,當(dāng)雙主雙從模式(M1->S1,M2->S2,并且M1與M2互為主備),正常情況下,M2,S1,S2 都參與select語句的負(fù)載均衡。 
3. balance="2",所以讀操作都隨機(jī)的在writehost、readhost上分發(fā)。
4. balance="3",所有讀請(qǐng)求隨機(jī)的分發(fā)到writehost對(duì)應(yīng)的readhost執(zhí)行,writehost不負(fù)擔(dān)讀壓力,注意balance=3只有1.4及其以后版本有,1.3沒有。
6.6.5  writeType 屬性
負(fù)載均衡類型,目前的取值有3種:
1. writeType="0", 多有寫操作發(fā)送到配置的第一個(gè)writehost,第一個(gè)掛了切到還生存的第二個(gè)writehost,重新啟動(dòng)后以切換后的為準(zhǔn),切換記錄在配置文件中:dnindex.properties
2. writeType="1",所有寫操作都隨機(jī)的發(fā)送到配置的wtirehost,1.5以后廢棄不推薦。
switchtype屬性


6.6.6  dbType 屬性
指定后端連接的數(shù)據(jù)庫(kù)類型,目前支持二進(jìn)制的mysql協(xié)議,還有其他使用jdbc連接的數(shù)據(jù)庫(kù)。例如:mongodb、oracle、spark等。
6.6.7  dbDriver 屬性
指定連接后端數(shù)據(jù)庫(kù)使用的driver,目前可選的值有native和jdbc。使用native的話,因?yàn)檫@個(gè)值執(zhí)行的二進(jìn)制的mysql協(xié)議,所以可以使用mysql和maridb。其它類型的數(shù)據(jù)庫(kù)則需要使用jdbc驅(qū)動(dòng)來支持。
如果使用jdbc的話需要將符合jdbc4標(biāo)準(zhǔn)的驅(qū)動(dòng)jar包放到mycat\lib目錄下,并檢測(cè)驅(qū)動(dòng)jar包中包括如下目錄結(jié)構(gòu)的文件:META-INF\services\java.sql.Driver。在這個(gè)文件內(nèi)寫上具體的Driver類名,例如:com.mysql.jdbc.Driver。
6.6.8  switchType 屬性
-  -1 表示不自動(dòng)切換
-  1 默認(rèn)值,自動(dòng)切換
-  2 基于mysql主從同步的狀態(tài)決定是否切換
心跳詢句為 show slave status
3  基二 MySQL galary cluster 的切換機(jī)制(適合集群)(1.4.1)
心跳語句為 show status like ‘wsrep%’.
6.6.9  tempReadHostAvailable 屬性
如果配置了這個(gè)屬性writehost下面的readhost仍舊可用,默認(rèn)0可配置(0、1)。
6.7  heartbeat 標(biāo)簽
這個(gè)標(biāo)簽內(nèi)指明用于和后端數(shù)據(jù)庫(kù)進(jìn)行心跳檢查的語句。例如,MYSQL 可以使用 select user(),Oracle 可以使用 select 1 from dual 等。
這個(gè)標(biāo)簽還有一個(gè)connectionInitSql屬性,主要當(dāng)使用Oracla數(shù)據(jù)庫(kù)時(shí),需要執(zhí)行的初始化SQL語句就放在這里面來。例如:alter session set nls_date_format='yyyy-mm-dd hh34:mi:ss'
1.4 主從切換的語句必須是:show slave status
6.7.1  writeHost 標(biāo)簽、readHost 標(biāo)簽
這兩個(gè)標(biāo)簽都指定后端數(shù)據(jù)庫(kù)的相關(guān)配置給mycat,用于實(shí)例化后端連接池。唯一不同的是,writehost指定寫實(shí)例、readhost指定讀實(shí)例,組成這些讀寫實(shí)例來滿足系統(tǒng)的要求。
在一個(gè)datahost內(nèi)可以定義多個(gè)writehost和readhost。但是,如果writehost指定的后端數(shù)據(jù)庫(kù)宕機(jī),那么這個(gè)writehost綁定的所有readhost都將不可用。另一方面,由于這個(gè)writehost宕機(jī)系統(tǒng)會(huì)自動(dòng)的檢測(cè)到,并切換到備用的writehost上去。
這兩個(gè)標(biāo)簽的屬性相同,這里就一起介紹。
-----------------------------------
|屬性名       |   值   | 數(shù)量限制 |
-----------------------------------
|host         | String |    (1)   |
-----------------------------------
|url          | String |    (1)   |
-----------------------------------
|password     | String |    (1)   |
-----------------------------------
|user         | String |    (1)   |
-----------------------------------
|weight       | String |    (1)   |
-----------------------------------
|usingDecrypt | String |    (1)   |
-----------------------------------
6.7.2  host 屬性
用于標(biāo)識(shí)不同實(shí)例,一般writehost我們使用*M1,readhost我們使用*S1。
6.7.3  url 屬性
后端實(shí)例連接地址,如果是使用native的dbdriver,則一般為address:port這種形式。用jdbc或其他的dbdriver,則需要特殊指定。當(dāng)使用jdbc時(shí)則可以這么些:jdbc:mysql://localhost:3306/。
6.7.4  user 屬性
后端存儲(chǔ)實(shí)例需要的用戶姓名
6.7.5  password 屬性
后端存儲(chǔ)實(shí)例需要的密碼
6.7.6  weight 屬性
權(quán)重配置在readhost中作為讀節(jié)點(diǎn)的權(quán)重(1.4以后)
6.7.7  usingDecrypt 屬性 
是否對(duì)密碼加密,默認(rèn)0 否,如果要開啟配置1

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“mycat中datanode和datahost如何配置”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

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

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

AI