修改之前備份schema.xml

1、作用
schema用于配置邏輯庫。
2、 配置說明
只做讀寫分離,不做分庫分表,Mycat只是幫我們轉(zhuǎn)發(fā)一下請求,讀轉(zhuǎn)發(fā)到從庫,寫轉(zhuǎn)發(fā)到主庫,則schema標(biāo)簽里面不用配置table。
給schema標(biāo)簽加上屬性dataNode,配置dataNode的名字(name)。
3、最終配置如下
<schema name="mycatdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"/>
配置dataNode
1、 作用
dataNode定義了Mycat中的數(shù)據(jù)節(jié)點(diǎn),也就是我們通常說所的數(shù)據(jù)分片,一個dataNode標(biāo)簽就是一個獨(dú)立的數(shù)據(jù)分片,通俗理解,一個分片就是一個物理數(shù)據(jù)庫
2、 配置說明
● name
定義數(shù)據(jù)節(jié)點(diǎn)的名字,這個名字需要是唯一的,這個名字在schema里面會使用到;
● dataHost
用于定義該分片屬于哪個數(shù)據(jù)庫實(shí)例的,屬性值是引用dataHost標(biāo)簽上定義的name屬性。
● database
用于對應(yīng)真實(shí)的數(shù)據(jù)庫名,必須是真實(shí)存在的;
3、最終配置如下
<dataNode name="dn1" dataHost="localhost1" database="test" />
配置dataHost
1、作用
定義具體的數(shù)據(jù)庫實(shí)例、讀寫分離配置和心跳語句;
2、配置說明
● balance屬性
負(fù)載均衡類型,目前的取值有4種:
①balance="0", 不開啟讀寫分離機(jī)制,所有讀操作都發(fā)送到當(dāng)前可用的writeHost上;
②balance="1",全部的readHost與stand by writeHost參與select語句的負(fù)載均衡,簡單的說,當(dāng)雙主雙從模式(M1->S1,M2->S2,并且M1與 M2互為主備),正常情況下,M2,S1,S2都參與select語句的負(fù)載均衡。
③balance="2",所有讀操作都隨機(jī)的在writeHost、readhost上分發(fā)。
④balance="3",所有讀請求隨機(jī)的分發(fā)到wiriterHost對應(yīng)的readhost執(zhí)行,writerHost不負(fù)擔(dān)讀壓力。
推薦balance設(shè)置為1
● writeType
已過時,1.6版本就不用了。
● switchType屬性
用于指定主服務(wù)器發(fā)生故障后的切換類型。
-1 表示不自動切換
①默認(rèn)值,自動切換(推薦)
②基于MySQL主從同步的狀態(tài)決定是否切換
③基于MySQL galary cluster的切換機(jī)制(適合集群)(1.4.1)
通常情況下,我們MySQL采用雙主雙從的模式下,switchType為1即可。因?yàn)殡p主從模式下,主從同步關(guān)系很復(fù)雜,不能根據(jù)MySQL的狀態(tài)來切換。只需要在一個主出問題后,切換到另外的主。
● heartbeat標(biāo)簽
用于和后端數(shù)據(jù)庫進(jìn)行心跳檢查的語句,檢測MySQL數(shù)據(jù)庫是否正常運(yùn)行。
當(dāng)switchType為1時,mysql心跳檢查語句是select user()。
當(dāng)switchType為2時,mysql心跳檢查語句是show slave status。
當(dāng)switchType為3時,mysql心跳檢查語句是show status like 'wsrep%'。
● writeHost與readHost標(biāo)簽
這兩個標(biāo)簽都指定后端數(shù)據(jù)庫的相關(guān)配置給mycat,用于實(shí)例化后端連接池。唯一不同的是,writeHost指定寫實(shí)例、readHost指定讀實(shí)例,組合這些讀寫實(shí)例來滿足系統(tǒng)的要求。
在一個dataHost內(nèi)可以定義多個writeHost和readHost。但是,如果writeHost指定的后端數(shù)據(jù)庫宕機(jī),那么這個writeHost綁定的所有readHost都將不可用。另一方面,由于這個writeHost宕機(jī)系統(tǒng)會自動的檢測到,并切換到備用的writeHost上去。
3、推薦配置
switchType設(shè)置為1,表示自動切換主從。
heartbeat語句為 select user()。
balance一般設(shè)置為1即可。
一主兩從配置示例:

雙主雙從配置示例:

完整配置信息(雙主雙從)
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--只做讀寫分離,不做分庫分表,Mycat只是幫我們轉(zhuǎn)發(fā)一下請求,讀轉(zhuǎn)發(fā)到從庫,寫轉(zhuǎn)發(fā)到主庫,則schema標(biāo)簽里面不用配置table-->
<schema name="mycatdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"/>
<!--配置真實(shí)存在的物理數(shù)據(jù)庫-->
<dataNode name="dn1" dataHost="localhost1" database="test" />
<dataHost name="localhost1"
maxCon="1000"
minCon="10"
balance="1"
writeType="0"
dbType="mysql"
dbDriver="native"
switchType="1"
slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM3307" url="localhost:3307" user="root" password="123456">
<readHost host="hostS3308" url="localhost:3308" user="root" password="123456" />
<readHost host="hostS3309" url="localhost:3309" user="root" password="123456" />
</writeHost>
<writeHost host="hostM3308" url="localhost:3308" user="root" password="123456">
<readHost host="hostS3307" url="localhost:3307" user="root" password="123456" />
<readHost host="hostS3310" url="localhost:3310" user="root" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>