现有MYSQL架构:
MHA1 192.168.1.20
MHA2 192.168.1.30
MHA3 192.168.1.40
SLAVE 192.168.1.50
MANAGER 192.168.1.60
因现有架构前端程序都是利用脚本轮询读写来实现人肉分离,没有健康检查,造成了网站时时有卡顿,因此需要利用mycat来实现读写分离,且带有有健康检查。
安装包:Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
一、新服务器192.168.1.70配置mycat
1.下载Mycat-server-1.6-RELEASE
2.安装mycat
[root@mycat ~]# tar -xf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
[root@mycat mycat]# cp -r ~/mycat/ /usr/local/mycat
3.修改登录mycat的用户
[root@mycat mycat]# vim /usr/local/mycat/conf/server.xml
<user name="root"> <property name="password">123456</property> <property name="schemas">mydb</property> </user> <user name="user"> <property name="password">user</property> <property name="schemas">mydb</property> <property name="readOnly">true</property> </user>
4.修改mycat配置
[root@mycat mycat]# vim /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="mydb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema> <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743" /> --> <dataNode name="dn1" dataHost="localhost1" database="mydb" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="192.168.1.100:3306" user="root" password="123456"> <!-- can have multi read hosts --> <readHost host="node1" url="192.168.1.30:3306" user="read" password="123456" /> <readHost host="node2" url="192.168.1.40:3306" user="read" password="123456" /> <readHost host="node3" url="192.168.1.50:3306" user="read" password="123456" /> </writeHost> </dataHost> </mycat:schema>
5.安装java环境
[root@mycat mycat]# yum -y install java-1.8.0-openjdk
6.主mysql授权select用户
mysql > grant select on *.* to read@'%' identified by '123456';
7.开启mycat
[root@mycat ~]# /usr/local/mycat/bin/mycat start
二、测试读写分离
[root@mha1 ~]# for i in {1..5};do mysql -uroot -p123456 -P8066 -h192.168.1.80 -e "select @@hostname"; done
+------------+
| @@hostname |
+------------+
| slave |
+------------+
+------------+
| @@hostname |
+------------+
| mha3 |
+------------+
+------------+
| @@hostname |
+------------+
| mha2 |
+------------+
+------------+
| @@hostname |
+------------+
| mha2 |
+------------+
+------------+
| @@hostname |
+------------+
| slave |
+------------+