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