Mycat的安裝與讀寫分離配置

Mycat:java

一個能夠用於MySQL讀寫分離和高可用的中間件mysql

一個模擬爲MySQL Server的超級數據庫linux

一個能平滑擴展支持1000億大表的分佈式數據庫系統sql

一個可管控多種關係數據庫的數據庫路由器數據庫

一個平滑從關係數據升級到大數據的應用中間件vim

 

準備工做:服務器

兩臺mysql服務器(一主一從),一臺mycat服務器,一臺mysql客戶機進行驗證負載均衡

爲了方便,關閉全部主機防火牆分佈式

1.   配置mysql主從同步ide

1.png

建立數據庫db1,db2,db3

建立表db1—test1,db2—test2,db3—test3

建立受權用戶grant all on *.* to 'root'@'%' identified by '123456';

2.   mycat是由java開發的,因此須要先安裝java,版本1.7以上

tar  zxf  jdk-8u20-linux-x64.tar.gz

mv  jdk1.8.0_20/  /usr/local/

添加環境變量(vim /etc/profile

export  JAVA_HOME=/usr/local/jdk1.8.0_20

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

2.png

3.   從官網下載mycat,並解壓

tar  zxf  Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

mv mycat/ /usr/local/

添加環境變量

export  PATH=$PATH:/usr/local/mycat/bin

4.   配置

-bin :啓動目錄

-conf :配置文件

--server.xml:是Mycat服務器參數調整和用戶受權的配置文件。

 

  --schema.xml:是邏輯庫定義和表以及分片定義的配置文件。

 

  --rule.xml  是分片規則的配置文件,分片規則的具體一些參數信息單獨存放爲文件,也在這個目錄下,配置文件修改須要重啓MyCAT

 

  --log4j.xml 日誌存放在logs/log中,天天一個文件,日誌的配置是在conf/log4j.xml中,根據本身的須要能夠調整輸出級別爲debug                           debug級別下,會輸出更多的信息,方便排查問題。

 

  --autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties sequence_db_conf.properties 分片相關的id分片規則配置文件

 

  --lib         MyCAT自身的jar包或依賴的jar包的存放目錄。

 

  --logs        MyCAT日誌的存放目錄。日誌存放在logs/log中,天天一個文件

邏輯庫配置

配置server.xml

3.png

配置schema.xml

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" >
<table name=」test1」 dataNode=」dn1,dn2」 rule=」rule1」 />
</schema>
<schema name="test"  checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2" />
<schema name="user"  checkSQLschema="false" sqlMaxLimit="100" dataNode="dn3" />
<dataNode name="dn1" dataHost="host" database="db1" />
<dataNode name="dn2" dataHost="host" database="db2" />
<dataNode name="dn3" dataHost="host" database="db3" />
 
<dataHost name="host" maxCon="1000" minCon="10" balance="1"
   writeType="0" dbType="mysql" dbDriver="native">
   <heartbeat>select 1</heartbeat>
   <!-- can have multi write hosts -->
   <writeHost host="hostM1" url="192.168.0.2:3306" user="root" password="123456」>
   <readhost="hostM2" url="192.168.0.3:3306" user="root" password="123456」>
</dataHost>


這裏須要注意的是 balance, switchType, writeType

balance="0", 不開啓讀寫分離機制,全部讀操做都發送到當前可用的writeHost上。

balance="1",所有的readHoststand by writeHost參與select語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1M2->S2,而且M1M2互爲主備),正常狀況下,M2,S1,S2都參與select語句的負載均衡。

balance="2",全部讀操做都隨機的在writeHostreadhost上分發。

balance="3",全部讀請求隨機的分發到wiriterHost對應的readhost執行,writerHost不負擔讀壓力

writeType表示寫模式

writeType="0",全部的操做發送到配置的第一個writehost

writeType="1",隨機發送到配置的全部writehost

writeType="2",不執行寫操做

switchType指的是切換的模式,目前的取值也有4種:

switchType=‘-1‘ 表示不自動切換

switchType=‘1‘ 默認值,表示自動切換

switchType=‘2‘ 基於MySQL主從同步的狀態決定是否切換,心跳語句爲show slave status

switchType=‘3‘基於MySQL galary cluster的切換機制(適合集羣)(1.4.1),心跳語句爲show status like ‘wsrep%‘

 

5.啓動mycat

cd  /usr/local/mycat/bin

./mycat  start

4.png

6.客戶機登陸

mysql -uroot -p123456 -P8066 –h mycat服務器IP

7.驗證

關閉主從同步stop slave;

 往mycat插入一條數據,提交刷新

觀察剛插入的數據,發現mycat並沒查看到這條數據

 觀看主庫,發現主庫有這條經過mycat添加的數據
 
觀看從庫,發現從庫沒有經過mycat添加的數據
 
開啓從數據庫主從同步start slave;

經過從庫查看發現有剛新添加的數據

經過mycat查看發現也有這條剛添加的數據

相關文章
相關標籤/搜索