久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Mycat三大核心配置文件是什么

共計(jì) 11242 個(gè)字符,預(yù)計(jì)需要花費(fèi) 29 分鐘才能閱讀完成。

這篇文章主要介紹“Mycat 三大核心配置文件是什么”,在日常操作中,相信很多人在 Mycat 三大核心配置文件是什么問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Mycat 三大核心配置文件是什么”的疑惑有所幫助!接下來,請(qǐng)跟著丸趣 TV 小編一起來學(xué)習(xí)吧!

Mycat 的三大核心配置文件:server.xml、schema.xml 和 rule.xml。

server.xml

server.xml 幾乎保存了所有 mycat 需要的系統(tǒng)配置信息。其在代碼內(nèi)直接的映射類為 SystemConfig 類。現(xiàn)在就對(duì)這個(gè)文件中的配置進(jìn)行相關(guān)的介紹

user 標(biāo)簽

user name= test   property name= password test /property   property name= schemas TESTDB /property   property name= readOnly true /property   /user

server.xml 中的標(biāo)簽本就不多,這個(gè)標(biāo)簽主要用于定義登錄 mycat 的用戶和權(quán)限。例如上面的例子中,我定義了一個(gè)用戶,用戶名為 test、密碼也為 test,可訪問的 schema 也只有 TESTDB 一個(gè)。如果我在 schema.xml 中定義了多個(gè) schema,那么這個(gè)用戶是無法訪問其他的 schema。在 mysql 客戶端看來則是無法使用 use 切換到這個(gè)其他的數(shù)據(jù)庫。如果使用了 use 命令,則 mycat 會(huì)報(bào)出這樣的錯(cuò)誤提示:ERROR  1044 (HY000): Access denied for user test to database   xxx 這個(gè)標(biāo)簽嵌套的 property 標(biāo)簽則是具體聲明的屬性值,正如上面的例子。我們可以修改 user 標(biāo)簽的 name 屬性來指定用戶名; 修改 password 內(nèi)的文本來修改密碼; 修改 readOnly 為 true   或 false 來限制用戶是否只是可讀的; 修改 schemas 內(nèi)的文本來控制用戶可放問的 schema; 修改 schemas 內(nèi)的文本來控制用戶可訪問的 schema,同時(shí)訪問多個(gè) schema 的話使用  , 隔開,例如:

property name= schemas TESTDB,db1,db2 /property

system 標(biāo)簽

這個(gè)標(biāo)簽內(nèi)嵌套的所有 property 標(biāo)簽都與系統(tǒng)配置有關(guān),請(qǐng)注意,下面我會(huì)省去標(biāo)簽 property 直接使用這個(gè)標(biāo)簽的 name 屬性內(nèi)的值來介紹這個(gè)屬性的作用。

defaultSqlParser 屬性

由于 mycat 最初是時(shí)候 Foundation  DB 的 sql 解析器,而后才添加的 Druid 的解析器。所以這個(gè)屬性用來指定默認(rèn)的解析器。目前的可用的取值有:druidparser 和  fdbparser。使用的時(shí)候可以選擇其中的一種,目前一般都使用 druidparser。

processors 屬性

這個(gè)屬性主要用于指定系統(tǒng)可用的線程數(shù),默認(rèn)值為 Runtime.getRuntime().availableProcessors() 方法返回的值。主要影響 processorBufferPool、processorBufferLocalPercent、processorExecutor 屬性。NIOProcessor 的個(gè)數(shù)也是由這個(gè)屬性定義的,所以調(diào)優(yōu)的時(shí)候可以適當(dāng)?shù)恼{(diào)高這個(gè)屬性。

processorBufferChunk 屬性

這個(gè)屬性指定每次分配 Socket Direct Buffer 的大小,默認(rèn)是 4096 個(gè)字節(jié)。這個(gè)屬性也影響 buffer pool 的長(zhǎng)度。

processorBufferPool 屬性

這個(gè)屬性指定 bufferPool 計(jì)算   比例值。由于每次執(zhí)行 NIO 讀、寫操作都需要使用到 buffer,系統(tǒng)初始化的時(shí)候會(huì)建立一定長(zhǎng)度的 buffer 池來加快讀、寫的效率,減少建立 buffer 的時(shí)間。

兩個(gè)主要的 buffer 池

BufferPool 和 ThreadLocalPool

BufferPool 由 ThreadLocalPool 組合而成,每次從 BufferPool 中獲取 buffer 都會(huì)優(yōu)先獲取 ThreadLocalPool 中的 buffer,未命中之后才會(huì)去獲取 BufferPool 中的 buffer。也就是說 ThreadLocalPool 是作為 BufferPool 的二級(jí)緩存,每個(gè)線程內(nèi)部自己使用的。當(dāng)然,這其中還有一些限制條件需要線程的名字是由 $_開頭。然而,BufferPool 上的 buffer 則是每個(gè) NIOProcessor 都共享的。默認(rèn)這個(gè)屬性的值為:

 默認(rèn) bufferChunkSize(4096) * processors 屬性  * 1000 BufferPool 的總長(zhǎng)度  = bufferPool / bufferChunk。

若 bufferPool 不是 bufferChunk 的整數(shù)倍,則總長(zhǎng)度為前面計(jì)算得出的商 + 1 假設(shè)系統(tǒng)線程數(shù)為 4,其他都為屬性的默認(rèn)值,則:

bufferPool = 4096 * 4 * 1000 BufferPool 的總長(zhǎng)度  : 4000 = 16384000 / 4096

processorBufferLocalPercent 屬性

前面提到了 ThreadLocalPool。這個(gè)屬性就是用來控制分配這個(gè) pool 的大小用的,但其也并不是一個(gè)準(zhǔn)確的值,也是一個(gè)比例值。這個(gè)屬性默認(rèn)值為 100。

 線程緩存百分比  = bufferLocalPercent / processors 屬性。

例如,系統(tǒng)可以同時(shí)運(yùn)行 4 個(gè)線程,使用默認(rèn)值,則根據(jù)公式每個(gè)線程的百分比為 25。最后根據(jù)這個(gè)百分比來計(jì)算出具體的。

ThreadLocalPool 的長(zhǎng)度公式如下:

ThreadLocalPool 的長(zhǎng)度  =  線程緩存百分比  * BufferPool 長(zhǎng)度  / 100

假設(shè) BufferPool 的長(zhǎng)度為 4000,其他保持默認(rèn)值。那么最后每個(gè)線程建立上的 ThreadLocalPool 的長(zhǎng)度為:1000 = 25 *  4000 / 100

processorExecutor 屬性

這個(gè)屬性主要用于指定 NIOProcessor 上共享的 businessExecutor 固定線程池大小。mycat 在需要處理一些異步邏輯的時(shí)候會(huì)把任務(wù)提交到這個(gè)線程池中。新版本中這個(gè)連接池的使用頻率不是很大了,可以設(shè)置一個(gè)較小的值。

sequnceHandlerType 屬性

指定使用 Mycat 全局序列的類型。0 為本地文件方式,1 為數(shù)據(jù)庫方式。默認(rèn)是使用本地文件方式,文件方式主要只是用于測(cè)試使用。

TCP 連接相關(guān)屬性

StandardSocketOptions.SO_RCVBUF StandardSocketOptions.SO_SNDBUF StandardSocketOptions.TCP_NODELAY

以上這三個(gè)屬性,分別由:

frontSocketSoRcvbuf 默認(rèn)值:1024 * 1024

frontSocketSoSndbuf 默認(rèn)值:4 * 1024 * 1024

frontSocketNoDelay 默認(rèn)值:1

backSocketSoRcvbuf 默認(rèn)值:4 * 1024 * 1024

backSocketSoSndbuf 默認(rèn)值:1024 * 1024

backSocketNoDelay 默認(rèn)值:1

各自設(shè)置前后端 TCP 連接參數(shù)。Mycat 在每次建立前、后端連接的時(shí)候都會(huì)使用這些參數(shù)初始化連接??梢园聪到y(tǒng)要求適當(dāng)?shù)恼{(diào)整這些 buffer 的大小。TCP 連接參數(shù)的定義,可以查看 Javadoc。MySQL 連接相關(guān)屬性初始化 mysql 前后端連接所涉及到的一些屬性:

packetHeaderSize : 指定 Mysql 協(xié)議中的報(bào)文頭長(zhǎng)度。默認(rèn) 4。

maxPacketSize : 指定 Mysql 協(xié)議可以攜帶的數(shù)據(jù)最大長(zhǎng)度。默認(rèn) 16M。

idleTimeout :   指定連接的空閑超時(shí)時(shí)間。某連接在發(fā)起空閑檢查下,發(fā)現(xiàn)距離上次使用超過了空閑時(shí)間,那么這個(gè)連接會(huì)被回收,就是被直接的關(guān)閉掉。默認(rèn) 30 分鐘。

charset : 連接的初始化字符集。默認(rèn)為 utf8。

txIsolation :   前端連接的初始化事務(wù)隔離級(jí)別,只在初始化的時(shí)候使用,后續(xù)會(huì)根據(jù)客戶端傳遞過來的屬性對(duì)后端數(shù)據(jù)庫連接進(jìn)行同步。默認(rèn)為 REPEATED_READ。

sqlExecuteTimeout:SQL 執(zhí)行超時(shí)的時(shí)間,Mycat 會(huì)檢查連接上最后一次執(zhí)行 SQL 的時(shí)間,若超過這個(gè)時(shí)間則會(huì)直接關(guān)閉這連接。默認(rèn)時(shí)間為 300 秒。

周期間隔相關(guān)屬性

mycat 中有幾個(gè)周期性的任務(wù)來異步的處理一些我需要的工作。這些屬性就在系統(tǒng)調(diào)優(yōu)的過程中也是比不可少的。

processorCheckPeriod : 清理 NIOProcessor 上前后端空閑、超時(shí)和關(guān)閉連接的間隔時(shí)間。默認(rèn)是 1 秒。

dataNodeIdleCheckPeriod : 對(duì)后端連接進(jìn)行空閑、超時(shí)檢查的時(shí)間間隔,默認(rèn)是 60 秒。

dataNodeHeartbeatPeriod : 對(duì)后端所有讀、寫庫發(fā)起心跳的間隔時(shí)間,默認(rèn)是 10 秒。

服務(wù)相關(guān)屬性

這里介紹一個(gè)與服務(wù)相關(guān)的屬性,主要會(huì)影響外部系統(tǒng)對(duì) myact 的感知。

bindIp : mycat 服務(wù)監(jiān)聽的 IP 地址,默認(rèn)值為 0.0.0.0。

serverPort : 定義 mycat 的使用端口,默認(rèn)值為 8066。

managerPort : 定義 mycat 的管理端口,默認(rèn)值為 9066。

schema.xml

schema.xml 作為 MyCat 中重要的配置文件之一,管理著 MyCat 的邏輯庫、表、分片規(guī)則、DataNode 以及 DataSource。弄懂這些配置,是正確使用 MyCat 的前提。這里就一層層對(duì)該文件進(jìn)行解析。

?xml version= 1.0 ?   !DOCTYPE mycat:schema SYSTEM  schema.dtd   mycat:schema xmlns:mycat= http://org.opencloudb/   schema name= TESTDB  checkSQLschema= false  sqlMaxLimit= 100   table name= user  dataNode= dn1,dn2  rule= auto-sharding-long  /   table name= stat_tcp_stream  dataNode= dn2,dn3  rule= auto-sharding-long  /   /schema   dataNode name= dn1  dataHost= localhost1  database= mpos_tshark_miner_2014  /   dataNode name= dn2  dataHost= localhost2  database= mpos_tshark_miner2014  /   dataNode name= dn3  dataHost= localhost3  database= mpos_tshark_hrtel  /   dataHost name= localhost1  maxCon= 1000  minCon= 10  balance= 0  dbType= mysql  dbDriver= jdbc  writeType= 0  switchType= 1  slaveThreshold= 100   heartbeat select user() /heartbeat   writeHost host= hostM1  url= jdbc:mysql://192.168.1.150:5029  user= root  password= root /writeHost   /dataHost   dataHost name= localhost2  maxCon= 1000  minCon= 1  balance= 0  dbType= mysql  dbDriver= jdbc   heartbeat   /heartbeat   writeHost host= hostM2  url= jdbc:mysql://192.168.1.150:5029  user= root  password= root /writeHost   /dataHost   dataHost name= localhost3  maxCon= 1000  minCon= 1  balance= 0  dbType= mysql  dbDriver= jdbc   heartbeat   /heartbeat   writeHost host= hostM3  url= jdbc:mysql://192.168.1.150:5029  user= root  password= root /writeHost   /dataHost   /mycat:schema

schema 標(biāo)簽

dataNode

該屬性用于綁定邏輯庫到某個(gè)具體的 database 上,如果定義了這個(gè)屬性,那么這個(gè)邏輯庫就不能工作在分庫分表模式下了。也就是說對(duì)這個(gè)邏輯庫的所有操作會(huì)直接作用到綁定的 dataNode 上,這個(gè) schema 就可以用作讀寫分離和主從切換,具體如下配置:

schema name= USERDB  checkSQLschema= false  sqlMaxLimit= 100  dataNode= dn1   ! mdash; 這里不能配置任何邏輯表信息 --   /schema

那么現(xiàn)在 USERDB 就綁定到 dn1 所配置的具體 database 上,可以直接訪問這個(gè) database。當(dāng)然該屬性只能配置綁定到一個(gè) database 上,不能綁定多個(gè) dn。

checkSQLschema

當(dāng)該值設(shè)置為 true 時(shí),如果我們執(zhí)行語句 select * from TESTDB.travelrecord; 則 MyCat 會(huì)把語句修改為  select * from travelrecord;。即把表示 schema 的字符去掉,避免發(fā)送到后端數(shù)據(jù)庫執(zhí)行時(shí)報(bào) (ERROR 1146 (42S02):  Table lsquo;testdb.travelrecord rsquo; doesn rsquo;t exist)。不過,即使設(shè)置該值為 true  ,如果語句所帶的是并非是 schema 指定的名字,例如:select * from db1.travelrecord;   那么 MyCat 并不會(huì)刪除 db1 這個(gè)字段,如果沒有定義該庫的話則會(huì)報(bào)錯(cuò),所以在提供 SQL 語句的最好是不帶這個(gè)字段。

sqlMaxLimit

當(dāng)該值設(shè)置為某個(gè)數(shù)值時(shí)。每條執(zhí)行的 SQL 語句,如果沒有加上 limit 語句,MyCat 也會(huì)自動(dòng)的加上所對(duì)應(yīng)的值。例如設(shè)置值為 100,執(zhí)行 select *  from TESTDB.travelrecord; 的效果為和執(zhí)行 select * from TESTDB.travelrecord limit 100;   相同。不設(shè)置該值的話,MyCat 默認(rèn)會(huì)把查詢到的信息全部都展示出來,造成過多的輸出。所以,在正常使用中,還是建議加上一個(gè)值,用于減少過多的數(shù)據(jù)返回。當(dāng)然 SQL 語句中也顯式的指定 limit 的大小,不受該屬性的約束。

table 標(biāo)簽

table name= travelrecord  dataNode= dn1,dn2,dn3  rule= auto-sharding-long   /table

Table 標(biāo)簽定義了 MyCat 中的邏輯表,所有需要拆分的表都需要在這個(gè)標(biāo)簽中定義。

name 屬性

定義邏輯表的表名,這個(gè)名字就如同我在數(shù)據(jù)庫中執(zhí)行 create table 命令指定的名字一樣,同個(gè) schema 標(biāo)簽中定義的名字必須唯一。

dataNode 屬性

定義這個(gè)邏輯表所屬的 dataNode,   該屬性的值需要和 dataNode 標(biāo)簽中 name 屬性的值相互對(duì)應(yīng)。如果需要定義的 dn 過多可以使用如下的方法減少配置:

table name= travelrecord  dataNode= multipleDn$0-99,multipleDn2$100-199  rule= auto-sharding-long   /table   dataNode name= multipleDn  dataHost= localhost1  database= db$0-99   /dataNode   dataNode name= multipleDn2  dataHost= localhost1  database=  db$0-99   /dataNode

這里需要注意的是 database 屬性所指定的真實(shí) database  name 需要在后面添加一個(gè),例如上面的例子中,我需要在真實(shí)的 mysql 上建立名稱為 dbs0 到 dbs99 的 database。

rule 屬性

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

primaryKey 屬性

該邏輯表對(duì)應(yīng)真實(shí)表的主鍵,例如:分片的規(guī)則是使用非主鍵進(jìn)行分片的,那么在使用主鍵查詢的時(shí)候,就會(huì)發(fā)送查詢語句到所有配置的 DN 上,如果使用該屬性配置真實(shí)表的主鍵。難么 MyCat 會(huì)緩存主鍵與具體 DN 的信息,那么再次使用非主鍵進(jìn)行查詢的時(shí)候就不會(huì)進(jìn)行廣播式的查詢,就會(huì)直接發(fā)送語句給具體的 DN,但是盡管配置該屬性,如果緩存并沒有命中的話,還是會(huì)發(fā)送語句給具體的 DN,來獲得數(shù)據(jù)。

type 屬性

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

autoIncrement 屬性

MySQL 對(duì)非自增長(zhǎng)主鍵,使用 last_insert_id() 是不會(huì)返回結(jié)果的,只會(huì)返回 0。所以,只有定義了自增長(zhǎng)主鍵的表才可以用 last_insert_id() 返回主鍵值。mycat 目前提供了自增長(zhǎng)主鍵功能,但是如果對(duì)應(yīng)的 mysql 節(jié)點(diǎn)上數(shù)據(jù)表,沒有定義 auto_increment,那么在 mycat 層調(diào)用 last_insert_id() 也是不會(huì)返回結(jié)果的。由于 insert 操作的時(shí)候沒有帶入分片鍵,mycat 會(huì)先取下這個(gè)表對(duì)應(yīng)的全局序列,然后賦值給分片鍵。這樣才能正常的插入到數(shù)據(jù)庫中,最后使用 last_insert_id() 才會(huì)返回插入的分片鍵值。如果要使用這個(gè)功能最好配合使用數(shù)據(jù)庫模式的全局序列。使用 autoIncrement=“true”  指定這個(gè)表有使用自增長(zhǎng)主鍵,這樣 mycat 才會(huì)不拋出分片鍵找不到的異常。使用 autoIncrement=“false”  來禁用這個(gè)功能,當(dāng)然你也可以直接刪除掉這個(gè)屬性。默認(rèn)就是禁用的。

needAddLimit 屬性

指定表是否需要自動(dòng)的在每個(gè)語句后面加上 limit 限制。由于使用了分庫分表,數(shù)據(jù)量有時(shí)會(huì)特別巨大。這時(shí)候執(zhí)行查詢語句,如果恰巧又忘記了加上數(shù)量限制的話。那么查詢所有的數(shù)據(jù)出來,也夠等上一小會(huì)兒的。所以,mycat 就自動(dòng)的為我們加上 LIMIT  100。當(dāng)然,如果語句中有 limit,就不會(huì)在次添加了。這個(gè)屬性默認(rèn)為 true, 你也可以設(shè)置成 false` 禁用掉默認(rèn)行為。

childTable 標(biāo)簽

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

table name= customer  primaryKey= ID  dataNode= dn1,dn2  rule= sharding-by-intfile   childTable name= orders  primaryKey= ID  joinKey= customer_id  parentKey= id   childTable name= order_items  joinKey= order_id  parentKey= id  /   /childTable   childTable name= customer_addr  primaryKey= ID  joinKey= customer_id  parentKey= id  /   /table

name 屬性

定義子表的表名。

joinKey 屬性

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

parentKey 屬性

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

primaryKey 屬性

同 table 標(biāo)簽所描述的。

needAddLimit 屬性

同 table 標(biāo)簽所描述的。

dataNode 標(biāo)簽

dataNode name= dn1  dataHost= lch4307  database= db1   /dataNode

dataNode 標(biāo)簽定義了 MyCat 中的數(shù)據(jù)節(jié)點(diǎn),也就是我們通常說所的數(shù)據(jù)分片。一個(gè) dataNode   標(biāo)簽就是一個(gè)獨(dú)立的數(shù)據(jù)分片。例子中所表述的意思為:使用名字為 lch4307 數(shù)據(jù)庫實(shí)例上的 db1 物理數(shù)據(jù)庫,這就組成一個(gè)數(shù)據(jù)分片,最后,我們使用名字 dn1 標(biāo)識(shí)這個(gè)分片。

name 屬性

定義數(shù)據(jù)節(jié)點(diǎn)的名字,這個(gè)名字需要是唯一的,我們需要在 table 標(biāo)簽上應(yīng)用這個(gè)名字,來建立表與分片對(duì)應(yīng)的關(guān)系。

dataHost 屬性

該屬性用于定義該分片屬于哪個(gè)數(shù)據(jù)庫實(shí)例的,屬性值是引用 dataHost 標(biāo)簽上定義的 name 屬性。

database 屬性

該屬性用于定義該分片屬性哪個(gè)具體數(shù)據(jù)庫實(shí)例上的具體庫,因?yàn)檫@里使用兩個(gè)緯度來定義分片,就是:實(shí)例 + 具體的庫。因?yàn)槊總€(gè)庫上建立的表和表結(jié)構(gòu)是一樣的。所以這樣做就可以輕松的對(duì)表進(jìn)行水平拆分。

dataHost 標(biāo)簽

作為 Schema.xml 中最后的一個(gè)標(biāo)簽,該標(biāo)簽在 mycat 邏輯庫中也是作為最底層的標(biāo)簽存在,直接定義了具體的數(shù)據(jù)庫實(shí)例、讀寫分離配置和心跳語句?,F(xiàn)在我們就解析下這個(gè)標(biāo)簽。

dataHost name= localhost1  maxCon= 1000  minCon= 10  balance= 0  writeType= 0  dbType= mysql  dbDriver= native   heartbeat select user() /heartbeat   !-- can have multi write hosts --   writeHost host= hostM1  url= localhost:3306  user= root  password= 123456   !-- can have multi read hosts --   !--  readHost host= hostS1  url= localhost:3306  user= root  password= 123456  /  --   /writeHost   !--  writeHost host= hostM2  url= localhost:3316  user= root  password= 123456 /  --   /dataHost

name 屬性

唯一標(biāo)識(shí) dataHost 標(biāo)簽,供上層的標(biāo)簽使用。

maxCon 屬性

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

minCon 屬性

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

balance 屬性

負(fù)載均衡類型,目前的取值有 3 種:

balance=“0”, 所有讀操作都發(fā)送到當(dāng)前可用的 writeHost 上。

balance=“1”,所有讀操作都隨機(jī)的發(fā)送到 readHost。

balance=“2”,所有讀操作都隨機(jī)的在 writeHost、readhost 上分發(fā)。

writeType 屬性

負(fù)載均衡類型,目前的取值有 3 種:

writeType=“0”, 所有寫操作都發(fā)送到可用的 writeHost 上。

writeType=“1”,所有寫操作都隨機(jī)的發(fā)送到 readHost。

writeType=“2”,所有寫操作都隨機(jī)的在 writeHost、readhost 分上發(fā)。

dbType 屬性

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

dbDriver 屬性

指定連接后端數(shù)據(jù)庫使用的 Driver,目前可選的值有 native 和 JDBC。使用 native 的話,因?yàn)檫@個(gè)值執(zhí)行的是二進(jìn)制的 mysql 協(xié)議,所以可以使用 mysql 和 maridb。其他類型的數(shù)據(jù)庫則需要使用 JDBC 驅(qū)動(dòng)來支持。如果使用 JDBC 的話需要將符合 JDBC  4 標(biāo)準(zhǔn)的驅(qū)動(dòng) JAR 包放到 MYCAT\lib 目錄下,并檢查驅(qū)動(dòng) JAR 包中包括如下目錄結(jié)構(gòu)的文件:META-INF\services\java.sql.Driver。在這個(gè)文件內(nèi)寫上具體的 Driver 類名,例如:com.mysql.jdbc.Driver。

heartbeat 標(biāo)簽

這個(gè)標(biāo)簽內(nèi)指明用于和后端數(shù)據(jù)庫進(jìn)行心跳檢查的語句。例如,MYSQL 可以使用 select user(),Oracle 可以使用 select 1 from  dual 等。這個(gè)標(biāo)簽還有一個(gè) connectionInitSql 屬性,主要是當(dāng)使用 Oracla 數(shù)據(jù)庫時(shí),需要執(zhí)行的初始化 SQL 語句就這個(gè)放到這里面來。例如:alter  session set nls_date_format= yyyy-mm-dd hh34:mi:ss

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

這兩個(gè)標(biāo)簽都指定后端數(shù)據(jù)庫的相關(guān)配置給 mycat,用于實(shí)例化后端連接池。唯一不同的是,writeHost 指定寫實(shí)例、readHost 指定讀實(shí)例,組著這些讀寫實(shí)例來滿足系統(tǒng)的要求。在一個(gè) dataHost 內(nèi)可以定義多個(gè) writeHost 和 readHost。但是,如果 writeHost 指定的后端數(shù)據(jù)庫宕機(jī),那么這個(gè) writeHost 綁定的所有 readHost 都將不可用。另一方面,由于這個(gè) writeHost 宕機(jī)系統(tǒng)會(huì)自動(dòng)的檢測(cè)到,并切換到備用的 writeHost 上去。這兩個(gè)標(biāo)簽的屬性相同,這里就一起介紹。

host 屬性

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

url 屬性

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

user 屬性

后端存儲(chǔ)實(shí)例需要的用戶名字

password 屬性

后端存儲(chǔ)實(shí)例需要的密碼

rule.xml

rule.xml 里面就定義了我們對(duì)表進(jìn)行拆分所涉及到的規(guī)則定義。我們可以靈活的對(duì)表使用不同的分片算法,或者對(duì)表使用相同的算法但具體的參數(shù)不同。這個(gè)文件里面主要有 tableRule 和 function 這兩個(gè)標(biāo)簽。在具體使用過程中可以按照需求添加 tableRule 和 function。

tableRule 標(biāo)簽

這個(gè)標(biāo)簽定義表規(guī)則。定義的表規(guī)則,在 rule.xml:

tableRule name= rule1   rule   columns id /columns   algorithm func1 /algorithm   /rule   /tableRule

name 屬性指定唯一的名字,用于標(biāo)識(shí)不同的表規(guī)則。內(nèi)嵌的 rule 標(biāo)簽則指定對(duì)物理表中的哪一列進(jìn)行拆分和使用什么路由算法。columns   內(nèi)指定要拆分的列名字。algorithm   使用 function 標(biāo)簽中的 name 屬性。連接表規(guī)則和具體路由算法。當(dāng)然,多個(gè)表規(guī)則可以連接到同一個(gè)路由算法上。標(biāo)簽內(nèi)使用。讓邏輯表使用這個(gè)規(guī)則進(jìn)行分片。

function 標(biāo)簽

 function name= hash-int   >

其中,各屬性如下所示。

name 指定算法的名字。

class 制定路由算法具體的類名字。

property 為具體算法需要用到的一些屬性。

到此,關(guān)于“Mycat 三大核心配置文件是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-27發(fā)表,共計(jì)11242字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 永城市| 嘉荫县| 重庆市| 三亚市| 丹东市| 汾西县| 房产| 惠来县| 太湖县| 绥化市| 华宁县| 五台县| 三穗县| 仙居县| 桃源县| 丹凤县| 宁武县| 长乐市| 淮滨县| 万州区| 马山县| 湖北省| 宁南县| 黎平县| 罗江县| 岳阳市| 武夷山市| 德化县| 凤山市| 华坪县| 上犹县| 翁牛特旗| 保亭| 阿坝县| 云霄县| 嘉峪关市| 星子县| 佛坪县| 衢州市| 古蔺县| 天镇县|