Mycat的server.xml配置詳解

server.xml 幾乎保存了所有 mycat 需要的系統(tǒng)配置信息宾袜。其在代碼內(nèi)直接的映射類為 SystemConfig 類。

1.user標(biāo)簽:

<user name="test">

<property name="password">test</property>

<property name="schemas">TESTDB</property>

<property name="readOnly">true</property>

<property name="benchmark">11111</property>

<proerty name="usingDecrypt">1</property>

<privileges check="false">

<schema name="TESTDB" dml="0010" showTables="custome/mysql">

<table name="tbl_user" dml="0110"></table>

<table name="tbl_dynamic dml="1111"></table>

</schema>

</privileges>

</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ù)庫(kù)。

如果使用了 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>

Benchmark 屬性:

Benchmark:mycat連接服務(wù)降級(jí)處理:benchmark基準(zhǔn),當(dāng)前端的整體connection數(shù)達(dá)到基準(zhǔn)值是,對(duì)來自該賬戶的請(qǐng)求開始拒絕連接奕筐,0或不設(shè)表示不限制.例如:

<property name="benchmark">1000</property>

usingDecrypt 屬性:

是否對(duì)密碼加密默認(rèn) 0 否 如需要開啟配置 1,同時(shí)使用加密程序?qū)γ艽a加密变骡,加密命令為:

執(zhí)行 mycat jar 程序:

java -cp Mycat-server-1.4.1-dev.jar org.opencloudb.util.DecryptUtil 0:user:password

Mycat-server-1.4.1-dev.jar 為 mycat download 下載目錄的 jar

1:host:user:password 中 0 為前端加密標(biāo)志

privileges 子節(jié)點(diǎn):

對(duì)用戶的 schema 及 下級(jí)的 table 進(jìn)行精細(xì)化的 DML 權(quán)限控制离赫,privileges 節(jié)點(diǎn)中的 check 屬性是用于標(biāo)識(shí)是否開啟 DML 權(quán)限檢查, 默認(rèn) false 標(biāo)識(shí)不檢查塌碌,當(dāng)然 privileges 節(jié)點(diǎn)不配置渊胸,等同 check=false,由于 Mycat 一個(gè)用戶的 schemas 屬性可配置多個(gè) schema ,所以 privileges 的下級(jí)節(jié)點(diǎn) schema 節(jié)點(diǎn)同樣可配置多個(gè)台妆,對(duì)多庫(kù)多表進(jìn)行細(xì)粒度的 DML 權(quán)限控制

Schema/Table 上的 dml 屬性描述

注: 設(shè)置了 schema , 但只設(shè)置了個(gè)別 table 或 未設(shè)置 table 的 DML翎猛,自動(dòng)繼承 schema 的 DML 屬性

privileges 配置事例如下:

<privileges check="true">

<schema name="TESTDB" dml="0010">

<table name="table01" dml="0111"></table>

<table name="table02" dml="0101"></table>

</schema>

</privileges>

2.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è)屬性的作用切厘。

charset 屬性:字符集設(shè)置

<system>

<property name="charset">utf8</property>

</system>

defaultSqlParser 屬性:

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

1.3 解析器默認(rèn)為 fdbparser舀凛,1.4 默認(rèn)為 druidparser,1.4 以后 fdbparser 作廢途蒋。

processors 屬性:

這個(gè)屬性主要用于指定系統(tǒng)可用的線程數(shù)猛遍,默認(rèn)值為機(jī)器 CPU 核心線程數(shù)。

主要影響 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)度日麸。如果一次性獲取的數(shù)過大 buffer 不夠用 經(jīng)常出現(xiàn)警告寄啼,則可以適當(dāng)調(diào)大.

processorBufferPool 屬性:

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

Mycat 中有兩個(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ù)庫(kù)方式,2 為時(shí)間戳序列方式矾削,3 為分布式ZK ID 生成器壤玫,4 為 zk 遞增 id 生成。

從 1.6 增加 兩種 ZK 的全局 ID 生成算法哼凯。

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ù)初始化連接猎贴。可以按系統(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ù)庫(kù)連接進(jìn)行同步。默認(rèn)為 REPEATED_READ蹂随,設(shè)置值為數(shù)字默認(rèn) 3十嘿。

READ_UNCOMMITTED = 1;

READ_COMMITTED = 2;

REPEATED_READ = 3;

SERIALIZABLE = 4;

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

心跳屬性:

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)是 300 秒,單位毫秒健爬。

dataNodeHeartbeatPeriod : 對(duì)后端所有讀控乾、寫庫(kù)發(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.


ps:還有部分1.6支持的屬性跑慕,詳細(xì)請(qǐng)看pdf



本文摘抄于:mycat用戶指南

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末万皿,一起剝皮案震驚了整個(gè)濱河市摧找,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌牢硅,老刑警劉巖蹬耘,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異减余,居然都是意外死亡综苔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門位岔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來如筛,“玉大人,你說我怎么就攤上這事抒抬∶钍颍” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵瞧剖,是天一觀的道長(zhǎng)拭嫁。 經(jīng)常有香客問我,道長(zhǎng)抓于,這世上最難降的妖魔是什么做粤? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮捉撮,結(jié)果婚禮上怕品,老公的妹妹穿的比我還像新娘。我一直安慰自己巾遭,他們只是感情好肉康,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著灼舍,像睡著了一般吼和。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上骑素,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天炫乓,我揣著相機(jī)與錄音,去河邊找鬼献丑。 笑死末捣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的创橄。 我是一名探鬼主播箩做,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼妥畏!你這毒婦竟也來了邦邦?” 一聲冷哼從身側(cè)響起安吁,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎圃酵,沒想到半個(gè)月后柳畔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馍管,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡郭赐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了确沸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捌锭。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖罗捎,靈堂內(nèi)的尸體忽然破棺而出观谦,到底是詐尸還是另有隱情,我是刑警寧澤桨菜,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布豁状,位于F島的核電站,受9級(jí)特大地震影響倒得,放射性物質(zhì)發(fā)生泄漏泻红。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一霞掺、第九天 我趴在偏房一處隱蔽的房頂上張望谊路。 院中可真熱鬧,春花似錦菩彬、人聲如沸缠劝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惨恭。三九已至,卻和暖如春耙旦,著一層夾襖步出監(jiān)牢的瞬間喉恋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工母廷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留轻黑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓琴昆,卻偏偏與公主長(zhǎng)得像氓鄙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子业舍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理抖拦,服務(wù)發(fā)現(xiàn)升酣,斷路器,智...
    卡卡羅2017閱讀 134,659評(píng)論 18 139
  • 1.schema.xml是干什么用的? Schema.xml 作為 MyCat 中重要的配置文件之一态罪,管理著 My...
    Johnny_Kam閱讀 13,655評(píng)論 1 4
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    Joyyx閱讀 8,328評(píng)論 0 16
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,822評(píng)論 6 342
  • 在孩子的成長(zhǎng)過程中复颈,爸爸媽媽和老師的關(guān)懷極為重要绩聘。 小麗是一個(gè)聰明可愛的女孩。四歲那年耗啦,爸爸媽媽將她送到一個(gè)舞蹈班...
    蒲陽凡媽閱讀 451評(píng)論 8 31