架構圖
use3.png
準備節點
MySQL
-
mysql_master
ip: 172.17.0.6 server-id: 2101
-
mysql_slave_01
ip: 172.17.0.7 server-id: 2102
-
mysql_slave_02
ip: 172.17.0.8 server-id: 2103
MyCat
mycat_01 ip: 172.17.0.9
mycat_02 ip: 172.17.0.10
mycat 模擬用戶
管理員:root:123456
只讀:guest:123456
HAProxy
ip: 172.17.0.11
MySQL 主從復制
HAProxy
部署 MyCat
-
下載 MyCat
root@mycat_02:~# wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz root@mycat_02:~# ls Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz root@mycat_02:~# cd /usr/local/ root@mycat_02:/usr/local# tar -zxvf /root/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
-
配置 MyCat
server.xml
<user name="root"> <property name="password">123456</property> <property name="schemas">test</property> </user> <user name="guest"> <property name="password">123456</property> <property name="schemas">test</property> <property name="readOnly">true</property> </user>
schema.xml
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode='dnTest'> </schema> <dataNode name="dnTest" dataHost="robostore" database="test" /> <dataHost name="robostore" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100"> <heartbeat>show slave status</heartbeat> <!-- can have multi write hosts --> <writeHost host="master" url="172.17.0.6:3306" user="root" password="root"> <!-- can have multi read hosts --> <readHost host="slave01" url="172.17.0.7:3306" user="root" password="root" /> <readHost host="slave02" url="172.17.0.8:3306" user="root" password="root" /> </writeHost> </dataHost> </mycat:schema>
屬性解釋
balance:
0: 不開啟讀寫分離機制。 1: 全部的readHost與stand by writeHost參與select語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,并且M1與 M2互為主備),正常情況下,M2,S1,S2都參與select語句的負載均衡。 2. 所有的readHost與writeHost都參與select語句的負載均衡,也就是說,當系統的寫操作壓力不大的情況下,所有主機都可以承擔負載均衡。
writeType:
0: 寫操作只寫入一個節點
switchType:
-1: 表示不啟用主從切換 1: 為默認值,自動切換 2: 基于主從同步的狀態,決定是否切換,與show slave status心跳對應 3: 基于多住galary集群切換,與show status like 'wsrep%'對應
-
運行 MyCat
root@mycat_02:/usr/local/mycat/bin# ./mycat start