潇湘夜雨移动版

主页 > 数据库 >

mycat中间件读写分离配置

一、数据库中间件介绍
目前MySQL的读写分离方案网上找了几个并做了对比。
mycat 基于阿里的cobar改版的   比较稳定
atlas 360开发的 网友说不是很稳定 已经很久没更新
mysql-proxy mysql自己的,不是很稳定,不建议采用
oneproxy 需要付费 比较稳定 性能也很好
amoeba 好像还行,有一些公司使用,但是很久没有更新了
 
综上所述,我选择用mycat来实现mysql的读写分离,mycat是的读写分离、分库、分表功能更加精细,尤其是负载均衡的效果
更好,而且提供了健康检查、主从切换等功能,使得mycat的高可用集群的配置更加容易,不过mycat的配置也是最繁琐的,需要对
要做分库、分表的数据库单独设置,不像ameoba只要把各个主从服务器整合起来就可以实现所有实例的读写分离。 
二、主从同步配置
首先先配置mysql的主从备份。一般配置双主多从的架构,这样可以保证读和写的高可用。如果只有两个mysql,还是建议使用
双主,这样即使一台挂掉,另一台依旧能够实现读操作和写操作。
这里实验采用一主两从的架构:
maste:172.18.109.235
slave1:172.18.109.236
slave2:172.18.109.237
主从同步的配置步骤这里不再介绍。
 
三、mycat配置
1.安装jdk环境
 
(1)下载“jdk-7u79-linux-x64.gz”,放到/home/java目录下
(2)解压,输入命令,tar -zxvf jdk-7u79-linux-x64.gz
(3)编辑/etc/profile
export JAVA_HOME=/home/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
(4)使配置生效,输入命令,source /etc/profile
(5)输入命令,java -version,完成
注意:jdk的安装方式有多种,也可以用yum安装,简单方便,但是在生产环境中建议用源码安装,以免版本过低或版本是精简版。
 
2.下载安装mycat
官方地址:http://www.mycat.org.cn/
[admin@node3 ~]# tar -zxvf Mycat-server-1.5.1-RELEASE-20160929233042-linux.tar.gz  
[admin@node3 ~]# mv mycat/ /usr/local/
[admin@node3 ~]# cd /usr/local/mycat/
[admin@node3 mycat]# ls
bin  catlet  conf  lib  logs  version.txt
 
3.配置mycat
 
3.1单个数据库实例配置
 
配置server.xml(主要配置用户及权限信息)
 
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License"); 
        - you may not use this file except in compliance with the License. - You 
        may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 
        - - Unless required by applicable law or agreed to in writing, software - 
        distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT 
        WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the 
        License for the specific language governing permissions and - limitations 
        under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
        <system>
        <property name="defaultSqlParser">druidparser</property>
      <!--  <property name="useCompression">1</property>--> <!--1为开启mysql压缩协议-->
        <!-- <property name="processorBufferChunk">40960</property> -->
        <!-- 
        <property name="processors">1</property> 
        <property name="processorExecutor">32</property> 
         -->
                <!--默认是65535 64K 用于sql解析时最大文本长度 -->
                <!--<property name="maxStringLiteralLength">65535</property>-->
                <!--<property name="sequnceHandlerType">0</property>-->
                <!--<property name="backSocketNoDelay">1</property>-->
                <!--<property name="frontSocketNoDelay">1</property>-->
                <!--<property name="processorExecutor">16</property>-->
                        <property name="mutiNodeLimitType">1</property>
                <property name="mutiNodePatchSize">100</property>
                        <property name="processors">32</property> <property name="processorExecutor">32</property>
                        <property name="serverPort">3306</property> <property name="managerPort">9066</property> #默认服务端口8806,这里改为3306
                        <property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property> #mycat服务监听地址
                        <property name="frontWriteQueueSize">4096</property> <property name="processors">32</property>
        </system>
        <user name="test"> #mycat用户名
                <property name="password">test</property> #用户密码
                <property name="schemas">testdb</property> #逻辑数据库,可以和后端的物理数据库名不同,但建议和后端一致。
        </user>
 
        <user name="user">
                <property name="password">user</property>
                <property name="schemas">testdb</property>
                <property name="readOnly">true</property>
        </user>
#这里创建了test和user两个mycat用户
        <!-- 
        <quarantine> 
           <whitehost>
              <host host="127.0.0.1" user="mycat"/>
              <host host="127.0.0.2" user="mycat"/>
           </whitehost>
       <blacklist check="false"></blacklist>
        </quarantine>
        -->
 
</mycat:server>
 
 
 配置schema.xml(主要配置数据库信息)
 
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/" >
 
<schema name="testdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> #创建逻辑库testdb节点 (责任编辑:liangzh)