码迷,mamicode.com
首页 > 其他好文 > 详细

mycat配置读写分离

时间:2018-06-15 16:11:43      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:read   ems   cat   JD   sys   mysq   false   like   配置   

现有后端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(VIP192.168.1.100)

因现有架构前端程序都是利用脚本轮询读写来实现人肉分离,没有健康检查,造成了网站时时有卡顿,因此需要利用中间件mycat来实现读写分离,且带有有健康检查。

安装包:Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

一、新服务器192.168.1.70配置mycat

1.下载Mycat-server-1.6-RELEASE

[root@mycat ~]# wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

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的账户密码和防火墙的设置server.xml

[root@mycat mycat]# vim /usr/local/mycat/conf/server.xml

<user name="root"&gt;
<property name="password"&gt;123456&lt;/property&gt;
<!-- &lt;登录mycat的用户和密码&gt; --&gt;
<property name="schemas"&gt;mycat&lt;/property&gt;
<!-- &lt;mydb是显示的虚拟库名,库名多个时,使用逗号分隔&gt; --&gt;
</user&gt;
<user name="user"&gt;
<property name="password"&gt;user&lt;/property&gt;
<property name="schemas"&gt;mycat&lt;/property&gt;
<property name="readOnly"&gt;true&lt;/property&gt;
<!-- &lt;这里配置只读用户&gt; --&gt;
</user&gt;

4.修改mycat配置分表读写分离策略schema.xml(没用的我删掉了)

[root@mycat mycat]# vim /usr/local/mycat/conf/schema.xml

<?xml version="1.0"?&gt;
<!DOCTYPE mycat:schema SYSTEM "schema.dtd"&gt;
<mycat:schema xmlns:mycat="http://io.mycat/"&gt;
<schema name="mycat" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"&gt;
<!-- &lt;对应上面文件的虚拟库名mycat&gt; --&gt;
<!-- &lt;这里我不需要分数据分片,所以要加回一个表名dn1&gt; --&gt;
</schema&gt;
<!-- &lt;dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
/&gt; --&gt;
<dataNode name="dn1" dataHost="localhost1" database="mydb" /&gt;
<!-- &lt;mydb真实数据库名&gt; --&gt;       
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"&gt;
<heartbeat&gt;select user()&lt;/heartbeat&gt;
<!-- can have multi write hosts --&gt;
<writeHost host="hostM1" url="192.168.1.100:3306" user="root"  password="123456"&gt;
<!-- &lt;写入的用户名密码&gt; --&gt; 
<!-- can have multi read hosts --&gt;
<readHost host="node1" url="192.168.1.30:3306" user="read" password="123456" /&gt;
<readHost host="node2" url="192.168.1.40:3306" user="read" password="123456" /&gt;
<readHost host="node3" url="192.168.1.50:3306" user="read" password="123456" /&gt;
<!-- &lt;读的用户名密码&gt; --&gt;  
</writeHost&gt;
</dataHost&gt;
</mycat:schema&gt;
这里面,有三个参数需要注意,balance、writeType和 switchType。
其中,balance指的负载均衡类型,目前的取值有4种:
1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
2. balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1-&gt;S1,M2-&gt;S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。
3. balance="2",所有读操作都随机的在writeHost、readhost上分发。
4. balance="3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力
writeType属性负载均衡类型,目前的取值有3种:
1. writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,
切换记录在配置文件中:dnindex.properties .
2. writeType="1",所有写操作都随机的发送到配置的writeHost,1.5以后废弃不推荐。
3. writeType="-1",不开启读写分离
switchType指的是切换的模式,目前的取值也有4种:
1. switchType=‘-1‘ 表示不自动切换
2. switchType=‘1‘ 默认值,表示自动切换
3. switchType=‘2‘ 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status
4. switchType=‘3‘基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%‘。

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

二、测试读写分离(mycat端口8066)

[root@mha1 ~]# for i in {1..5};do mysql -uroot -p123456 -P8066 -h192.168.1.70 -e "select @@hostname"; done
| @@hostname |
+------------+
| slave |
+------------+
| @@hostname |
+------------+
| mha3 |
+------------+
| @@hostname |
+------------+
| mha2 |
+------------+
| @@hostname |
+------------+
| mha2 |
+------------+
| @@hostname |
+------------+
| slave |
+------------+

mycat配置读写分离

标签:read   ems   cat   JD   sys   mysq   false   like   配置   

原文地址:http://blog.51cto.com/13762620/2129803

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!