一.測(cè)試環(huán)境
創(chuàng)建兩臺(tái)CentOS7虛機(jī),部署兩套MySQL數(shù)據(jù)庫配置主從同步,直接在主庫服務(wù)器安裝mycat進(jìn)行測(cè)試。
主庫:192.168.216.128 port:3306
從庫:192.168.216.129 port:3306
1.下載MyCat安裝文件上傳至主庫服務(wù)器M
Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
百度網(wǎng)盤:https://pan.baidu.com/s/1Xeyno8pRomT__AvmzcvKnQ
提取碼:hmhc
- 上傳成功后解壓至
/home目錄下
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
2.配置環(huán)境變量
vim /etc/profile
export PATH=/home/mycat/bin:$PATH
source /etc/profile
3.修改MyCat配置文件
vim /home/mycat/conf/server.xml
<!--讀寫權(quán)限管理員賬戶-->
<user name="root">
<property name="password">123456</property>
<property name="schemas">test</property>
</user>
<!--只讀權(quán)限普通賬戶-->
<user name="user">
<property name="password">user123</property>
<property name="schemas">test</property>
<property name="readOnly">true</property>
</user>
vim /home/mycat/conf/schems.xml
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 定義一個(gè)MyCat的模式,邏輯數(shù)據(jù)庫名稱TestDB -->
<!-- “checkSQLschema”:描述的是當(dāng)前的連接是否需要檢測(cè)數(shù)據(jù)庫的模式 -->
<!-- “sqlMaxLimit”:表示返回的最大的數(shù)據(jù)量的行數(shù) -->
<!-- “dataNode="dn1"”:該操作使用的數(shù)據(jù)節(jié)點(diǎn)是dn1的邏輯名稱 -->
<schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"/>
<!-- 定義個(gè)數(shù)據(jù)的操作節(jié)點(diǎn),以后這個(gè)節(jié)點(diǎn)會(huì)進(jìn)行一些庫表分離使用 -->
<!-- “dataHost="localhost1"”:定義數(shù)據(jù)節(jié)點(diǎn)的邏輯名稱 -->
<!-- “database="test"”:定義數(shù)據(jù)節(jié)點(diǎn)要使用的數(shù)據(jù)庫名稱 -->
<dataNode name="dn1" dataHost="localhost1" database="test" />
<!-- 定義數(shù)據(jù)節(jié)點(diǎn),包括了各種邏輯項(xiàng)的配置 -->
<dataHost name="test" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- 配置真實(shí)MySQL與MyCat的心跳 -->
<heartbeat>select user()</heartbeat>
<!-- 配置真實(shí)的MySQL的連接路徑 -->
<writeHost host="hostM1" url="192.168.216.128:3306" user="root" password="123456">
<readHost host="hostS1" url="192.168.216.129:3306" user="root" password="123456"/>
</writeHost>
<writeHost host="hostM2" url="192.168.216.129:3306" user="root" password="123456">
</writeHost>
</dataHost>
</mycat:schema>
4.啟動(dòng)MyCat : mycat start
二.關(guān)鍵配置項(xiàng)
在mycat/conf目錄下 MyCat的核心配置文件schems.xml
| 屬性 | 狀態(tài) | 說明 |
|---|---|---|
| balance | 表示負(fù)載模式 | |
| balance | 0 | 不開啟讀寫分離機(jī)制,所有讀操作都發(fā)送到當(dāng)前可用的writeHost上。 |
| balance | 1 | 全部的readHost與stand by writeHost參與select語句的負(fù)載均衡。簡(jiǎn)單的說當(dāng)雙主雙從模式(M1->S1,M2->S2,并且M1與M2互為主備),正常情況下,M2,S1,S2都參與select語句的負(fù)載均衡。 |
| balance | 2 | 所有讀操作都隨機(jī)的在writeHost、readhost上分發(fā)。 |
| balance | 3 | 所有讀請(qǐng)求隨機(jī)的分發(fā)到wiriterHost對(duì)應(yīng)的readhost執(zhí)行,writerHost不負(fù)擔(dān)讀壓力 |
| writeType | 表示寫模式 | |
| writeType | 0 | 所有的操作發(fā)送到配置的第一個(gè)writehost |
| writeType | 1 | 隨機(jī)發(fā)送到配置的所有writehost |
| writeType | 2 | 不執(zhí)行寫操作 |
| switchType | 指的是切換模式,目前的取值也有4種。 | |
| switchType | -1 | 表示不自動(dòng)切換 |
| switchType | 1 | 默認(rèn)值,表示自動(dòng)切換 |
| switchType | 2 | 基于MySQL主從同步的狀態(tài)決定是否切換,心跳語句為show slave status |
| switchType | 3 | 基于MySQL galary cluster的切換機(jī)制(適合集群)(1.4.1),心跳語句為show status like ‘wsrep%‘。 |
三.測(cè)試記錄
采用 banlance =1,writeType = 0 ,switchType = 1的配置模式
1.使主庫宕機(jī) service mysql stop;
結(jié)果:讀寫轉(zhuǎn)移至從庫,mycat正常連接。
2.恢復(fù)主庫運(yùn)行service mysql start
結(jié)果:mycat依舊采用從庫進(jìn)行讀寫未重新接入主庫