一.測試環(huán)境
創(chuàng)建兩臺CentOS7虛機,部署兩套MySQL數(shù)據(jù)庫配置主從同步育苟,直接在主庫服務(wù)器安裝mycat進行測試。
主庫: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/">
<!-- 定義一個MyCat的模式椎木,邏輯數(shù)據(jù)庫名稱TestDB -->
<!-- “checkSQLschema”:描述的是當前的連接是否需要檢測數(shù)據(jù)庫的模式 -->
<!-- “sqlMaxLimit”:表示返回的最大的數(shù)據(jù)量的行數(shù) -->
<!-- “dataNode="dn1"”:該操作使用的數(shù)據(jù)節(jié)點是dn1的邏輯名稱 -->
<schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"/>
<!-- 定義個數(shù)據(jù)的操作節(jié)點违柏,以后這個節(jié)點會進行一些庫表分離使用 -->
<!-- “dataHost="localhost1"”:定義數(shù)據(jù)節(jié)點的邏輯名稱 -->
<!-- “database="test"”:定義數(shù)據(jù)節(jié)點要使用的數(shù)據(jù)庫名稱 -->
<dataNode name="dn1" dataHost="localhost1" database="test" />
<!-- 定義數(shù)據(jù)節(jié)點,包括了各種邏輯項的配置 -->
<dataHost name="test" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- 配置真實MySQL與MyCat的心跳 -->
<heartbeat>select user()</heartbeat>
<!-- 配置真實的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.啟動MyCat : mycat start
二.關(guān)鍵配置項
在mycat/conf
目錄下 MyCat的核心配置文件schems.xml
屬性 | 狀態(tài) | 說明 |
---|---|---|
balance | 表示負載模式 | |
balance | 0 | 不開啟讀寫分離機制香椎,所有讀操作都發(fā)送到當前可用的writeHost上漱竖。 |
balance | 1 | 全部的readHost與stand by writeHost參與select語句的負載均衡。簡單的說當雙主雙從模式(M1->S1,M2->S2,并且M1與M2互為主備),正常情況下,M2,S1,S2都參與select語句的負載均衡畜伐。 |
balance | 2 | 所有讀操作都隨機的在writeHost馍惹、readhost上分發(fā)。 |
balance | 3 | 所有讀請求隨機的分發(fā)到wiriterHost對應(yīng)的readhost執(zhí)行,writerHost不負擔讀壓力 |
writeType | 表示寫模式 | |
writeType | 0 | 所有的操作發(fā)送到配置的第一個writehost |
writeType | 1 | 隨機發(fā)送到配置的所有writehost |
writeType | 2 | 不執(zhí)行寫操作 |
switchType | 指的是切換模式玛界,目前的取值也有4種万矾。 | |
switchType | -1 | 表示不自動切換 |
switchType | 1 | 默認值,表示自動切換 |
switchType | 2 | 基于MySQL主從同步的狀態(tài)決定是否切換,心跳語句為show slave status |
switchType | 3 | 基于MySQL galary cluster的切換機制(適合集群)(1.4.1)慎框,心跳語句為show status like ‘wsrep%‘良狈。 |
三.測試記錄
采用 banlance =1,writeType = 0 ,switchType = 1的配置模式
1.使主庫宕機 service mysql stop;
結(jié)果:讀寫轉(zhuǎn)移至從庫笨枯,mycat正常連接薪丁。
2.恢復主庫運行service mysql start
結(jié)果:mycat依舊采用從庫進行讀寫未重新接入主庫