标签: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"> <property name="password">123456</property> <!-- <登录mycat的用户和密码> --> <property name="schemas">mycat</property> <!-- <mydb是显示的虚拟库名,库名多个时,使用逗号分隔> --> </user> <user name="user"> <property name="password">user</property> <property name="schemas">mycat</property> <property name="readOnly">true</property> <!-- <这里配置只读用户> --> </user>
4.修改mycat配置分表读写分离策略schema.xml(没用的我删掉了)
[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="mycat" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> <!-- <对应上面文件的虚拟库名mycat> --> <!-- <这里我不需要分数据分片,所以要加回一个表名dn1> --> </schema> <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743" /> --> <dataNode name="dn1" dataHost="localhost1" database="mydb" /> <!-- <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>
这里面,有三个参数需要注意,balance、writeType和 switchType。 其中,balance指的负载均衡类型,目前的取值有4种: 1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。 2. balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->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 |
+------------+
标签:read ems cat JD sys mysq false like 配置
原文地址:http://blog.51cto.com/13762620/2129803