一、schema.xml
1.1 簡介
schema.xml作為Mycat中最重要的配置文件之一,涵蓋了Mycat的邏輯庫、邏輯表、分片規(guī)則、分片節(jié)點(diǎn)即數(shù)據(jù)源的配置。主要包括一下三組標(biāo)簽
-
- schema標(biāo)簽
- datanode標(biāo)簽
- datahost標(biāo)簽
1.2 schema標(biāo)簽
用于定于Mycat實(shí)例中的邏輯庫,一個Mycat實(shí)例中,可以有多個數(shù)據(jù)庫,可以通過schema標(biāo)簽來劃分不同的邏輯庫。Mycat中的邏輯庫的概念,等同于MySQL中的database概念沒需要操作某個邏輯庫下的表時,就需要切換邏輯庫,同MySQL一樣,使用use xxxx語句。
核心屬性:
-
- name: 自定自定義的邏輯庫苦命
- checkSQLschema: 在SQL語句操作時指定了數(shù)據(jù)庫名稱,執(zhí)行時是否自動去除,true:自動去除,false不自動去除,即如果有true時,我們可以不進(jìn)入數(shù)據(jù)庫查詢.
- sqlMaxLimit: 如果未指定limit進(jìn)行查詢,列表查詢模式默認(rèn)查詢的條數(shù)。
checkSQLschema參數(shù)演示:
? 說明1:當(dāng)checkSQLschema為true時,我們可以不進(jìn)入數(shù)據(jù)庫查詢,即使用DB01.TB_ORDER的方式,但是如果checkSQLschema為false的時候,就不能這樣寫了,就必須要要先usr DB01;今日數(shù)據(jù)庫里面在查找,所以這里大家就直接給true就行了。
1.3 schema標(biāo)簽中的table標(biāo)簽
table標(biāo)簽定義Mycat中邏輯庫schema下的邏輯表,所有需要查分的表都需要在table標(biāo)簽中定義。
核心屬性
-
- name:定義邏輯表表名,在該邏輯庫下唯一
- DataNode:定義邏輯表所屬的dataNode,該屬性需要與dataNode標(biāo)簽中的name對應(yīng),多個dataNode用逗號隔開
- rule: 分片規(guī)則的名稱,分片規(guī)則名字是在rule.xml中定義的
- primaryKey: 邏輯表對應(yīng)的真是表的主鍵
- type: 邏輯表的類型,目前邏輯表只有全局表和普通表,如果未配置,默認(rèn)是普通表,全局表配置為global
1.4 dataNode標(biāo)簽
? dataNode標(biāo)簽中定義了Mycat中的數(shù)據(jù)節(jié)點(diǎn),也就是我們通常說的數(shù)據(jù)分片,一個dataNode標(biāo)簽就是一個獨(dú)立的數(shù)據(jù)分片
核心屬性
-
- name:定義了數(shù)據(jù)節(jié)點(diǎn)名稱
- dataHost:數(shù)據(jù)庫實(shí)例主機(jī)名稱,引用自dataHost標(biāo)簽中name屬性
- database:定義分片所屬數(shù)據(jù)庫
1.5 dataHost標(biāo)簽
該標(biāo)簽在Mycat邏輯庫中作為底層標(biāo)簽,直接定義了具體的數(shù)據(jù)庫實(shí)例、讀寫分離,心跳語句。
核心屬性:
-
- name:唯一標(biāo)識符,供上層標(biāo)簽使用
- maxCon/minCon:最大連接數(shù)/最小連接數(shù)
- balance:負(fù)載均衡策略,取值0,1,2,3 ,讀寫分離的時候,在詳細(xì)說明這四個取值的意義。
- writeType:寫操作分發(fā)方式(0:寫操作轉(zhuǎn)發(fā)到第一個writeHost,第一個掛了,切換到第二個;1:寫操作隨機(jī)發(fā)配到配置的writeHost)
- dbDriver:數(shù)據(jù)庫驅(qū)動,支持native和jdbc,native主要支持MySQL5+,jdbc主要支持MySQL8+
1.6 schema.xml邏輯庫映射
邏輯庫的名字和mysql數(shù)據(jù)庫中的名字可以不一致的,例如我們這里配置的邏輯庫的名字是大寫的DB01,而MySQL中的數(shù)據(jù)庫名則是小寫的db01,這取決于邏輯庫和MySQL真實(shí)數(shù)據(jù)庫的映射關(guān)系。
schema.xml整體配置流程即關(guān)系隱射示意
?二、rule.xml
rule.xml中定義了所有拆分表的規(guī)則,在使用過程中可以靈活的使用分片算法,或者對同一個分片算法使用不同的參數(shù),它讓分片過程可配置化,主要包含兩類標(biāo)簽:tableRule,F(xiàn)unction
而在schema.xml中配置的分片規(guī)則就是在這里定義的
說明1:在tableRule標(biāo)簽里面主要有columns和algorithm兩個標(biāo)簽。
說明2:columns標(biāo)簽主要是分表的依據(jù)
說明3:algorithm標(biāo)簽主要是,分庫分表的算法引用,這里algorithm里面的值就是Function標(biāo)簽的實(shí)現(xiàn)。
例如:auto-sharding-long 分表規(guī)則的,依據(jù)是rang-long這個算法。
而 rang-long這個算法就在function標(biāo)簽中有定義,而function標(biāo)簽中的class就是對應(yīng)這個算法的實(shí)現(xiàn)類。
說明4:至于這里面的分庫分表的規(guī)則具體的使用,我們會在后面分庫分表實(shí)戰(zhàn)章節(jié),用到的時候在詳細(xì)說。?
三、server.xml
server.xml配置文件包含了Mycat的系統(tǒng)配置,主要有兩個重要的標(biāo)簽:system, user.
3.1 system標(biāo)簽
? 重要屬性說明:
-
- charset: 取值utf8: 設(shè)置Mycat的字符集,字符集需要與MySQL的字符集保持一致
- nonePasswordLogin: 取值 [0, 1], 0:需要登錄密碼登錄,1:不需要登錄密碼登錄,默認(rèn)為0,設(shè)置為1,則需要指定默認(rèn)賬戶
- useHandshakeV10: 取值 [0,1],使用該選項(xiàng)主要是為了能夠兼容高低版本的jdbc驅(qū)動,是否采用handshakeV10來與client進(jìn)行通訊,1:是,0:否
- useSqlStat: 取值[0,1],開啟SQL實(shí)時統(tǒng)計(jì) 1:開啟,0:關(guān)閉,開啟之后Mycat會自動統(tǒng)計(jì)SQL語句的執(zhí)行情況:mysql -h xxx.xxx.xxx.xxx -P 9066 -u root -p之后就可以查看,使用show @@sql; show @@sql.low; show @@sql.sum等,分別是查看Myact執(zhí)行的sql, 執(zhí)行效率比較低的SQL,SQL的整體執(zhí)行情況,讀寫比例等等。
- useGlobelTableCheak: 取值[0,1],是否開啟全局表一致性檢查,1:開啟,0關(guān)閉
- sqlExecuteTimeout: 取值1000等整數(shù):SQL執(zhí)行的超時時間單位為秒
- sequnceHandleType:取值[0,1,2],用來指定Mycat全局序列類型,0:本地文件,1:數(shù)據(jù)庫方式,2:為時間戳方式,默認(rèn)使用本地文件方式,文件方式主要用于測試
- sequnceHandlePattern: 正則表達(dá)式:必須帶有MYCATSEQ或者mycatseq進(jìn)入序列匹配流程
- subqueryRelationshipCheck: 取值[true,false],子查詢存在關(guān)聯(lián)查詢的情況下,檢查關(guān)聯(lián)字段中是否有分片字段,默認(rèn)false
- useCompression: 取值[0,1],開啟mysql壓縮協(xié)議,0:關(guān)閉,1:開始
- fakeMySQLVersion: 5.5,5.6,8.0.27等,設(shè)置模擬MySQL版本號
- defaultSqlParser: 由于Mycat的最初版本使用了FoundationDB的SQL解析器,在Mycat1.3后增加了Druid解析器,所以要設(shè)置defaultSqlParser屬性來指定默認(rèn)的解析器,解析器有兩個:druidparser和fdbparser,在Mycat1.4之后默認(rèn)是fruidparser,fdbparser已經(jīng)廢棄
- processors: 取值[1,2....] 指定系統(tǒng)可用的線程數(shù)量,默認(rèn)值為CPU核心 乘以 每個核心運(yùn)行的線程數(shù),processors會影響processorBufferPool,processorBufferLocalPercent,processorExecutor屬性,所以在性能調(diào)優(yōu)時可以適當(dāng)?shù)男薷膒rocessors的值
- processorBufferChunk: 指定每次分配Socker Direct Buffer默認(rèn)值為4096字節(jié),也會影響B(tài)ufferPool長度,如果一次性獲取字節(jié)過多而導(dǎo)致buffer不都用,則會出現(xiàn)警告,可以調(diào)大該值
- processorExecutor: 指定NIOProcessor上共享businessExecutor固定線程池的大小,Mycat把異步任務(wù)交給businessExecutor線程池,在新版本的Mycat中這個連接池使用頻率不高,可以適當(dāng)?shù)陌言撝嫡{(diào)小
- packetHeaderSize: 指定MySQL協(xié)議中的報文頭長度,默認(rèn)4個字節(jié)。
- maxPacketSize: 指定MySQL協(xié)議可以攜帶的數(shù)據(jù)最大大小,默認(rèn)值為16M
- idleTimeout: 取值30等,指定連接的空閑時間的超時長度,如果超時將關(guān)閉資源并回收,默認(rèn)30分鐘
- txlsolation:取值[1,2,3,4], 初始化前端連接的事務(wù)隔離級別,默認(rèn)為REPEATED_READ,對應(yīng)數(shù)字3,READ_UNCOMMITED=1, READ_COMMITED=2,REPEATED_READ=3,SERIALIZABLE=4
- sqlExecuteTimeout: 取值 300 等, 執(zhí)行SQL的超時時間,如果SQL語句執(zhí)行超時,將關(guān)閉連接,默認(rèn)300秒
- serverPort: 8066 ,定義Mycat的使用端口,默認(rèn)8066
- managerPort: 9066, 定義Mycat的管理端口,默認(rèn)9066
3.2 user標(biāo)簽
? ? 說明1:server.xml中允許有多個user,即同時配置多個用戶的權(quán)限
說明2:如果一個賬戶可以訪問多個邏輯庫,多個邏輯庫之間用逗號隔開
說明3:dml中的四個二進(jìn)制數(shù)分別代表增,改,查,刪的權(quán)限
說明4:如果邏輯表和邏輯庫的權(quán)限沖突,則就近原則,即優(yōu)先使用邏輯表的權(quán)限
文章來源:http://www.zghlxwxcb.cn/news/detail-759983.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-759983.html
到了這里,關(guān)于MySQL運(yùn)維5-Mycat配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!