mycat中间件读写分离配置
时间:2016-10-30 22:22 来源:潇湘夜雨 作者:华嵩阳 点击:次
一、数据库中间件介绍
目前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) |