Mycat介绍:
- mycat是最近很火的一款国人发明的分布式数据库中间件,它是基于阿里的cobar的基础上进行开发的
- 准备环境:
- db01主 192.168.1.146
- db02备 192.168.1.147
- mycat 192.168.1.148
- 主从同步配置(这里就不介绍了,先把主从同步做了,授权,防火墙关闭等)
- java环境1.7以上 添加环境变量
搭建mycat
1.下载 可以去官网看看http://www.mycat.io
这个是版本地址 https://github.com/MyCATApache/Mycat-download
在148服务器执行 我下载的是1.5的版本
wget https://raw.githubusercontent.com/MyCATApache/Mycat-download/master/1.5-RELEASE/Mycat-server-1.5.1-RELEASE-20161130213509-linux.tar.gz
tar xvf Mycat-server-1.5.1-RELEASE-20161130213509-linux.tar.gz -C /usr/local/
加压了,配置两个文件夹就可以,我这只是用到了读写分离(mycat更牛的地方可能实在分库分表)
修改配置文件Vim /usr/local/mycat/conf/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> 0:开启小数量级(默认) ;1:开启亿级数据排序
<property name="mutiNodePatchSize">100</property> 亿级数量排序批量
<property name="processors">32</property> <property name="processorExecutor">32</property>
<property name="serverPort">8066</property> <property name="managerPort">9066</property>
<property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property>
<property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> -->
</system>
<user name="mycatroot"> <!--对外的连接用户名 -->
<property name="password">mycatroot</property> <!--密码 -->
<property name="schemas">ssc</property> <!-- 对外的数据库 虚拟的可以是别名-->
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">ssc</property>
<property name="readOnly">true</property><!--只读账号 -->
</user>
<!--
<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 Vim /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<!--对应server的数据库 sqlMaxLimit 最大连接 dataNode='dn1' 分库的时候用到 不分也可以 -->
<schema name="ssc" checkSQLschema="false" sqlMaxLimit="100" dataNode='dn1'>
</schema>
<dataNode name="dn1" dataHost="dthost" database="ssc"/><!-- 真实的数据库-->
<dataHost name="dthost" maxCon="500" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!--配置写服务器-->
<writeHost host="192.168.1.146" url="192.168.1.146:3306" user="root1" password="123456">
<!--配置读服务器-->
<readHost host="192.168.1.147" url="192.168.1.147:3306" user="root1" password="123456" />
</writeHost>
<!--配置写备服务器-->
<writeHost host="192.168.1.147" url="192.168.1.147:3306" user="root1" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>
添加mycat的环境变量
vi /etc/profile 添加
MYCAT_HOME=/usr/local/mycat PATH=$MYCAT_HOME/bin:$PATH
执行 source /etc/profile 命令,使环境变量生效。
启动服务mycat服务 mycat的端口是8066 直接输入mycat会出来他的命令
mycat start #启动
连接测试
mysql -umycatroot -pmycatroot -P8066 -h192.168.1.148
参数说明
在schema.xml中 dataHost 内可以定义多个 writeHost 和 readHost。但是,如果 writeHost 指定的后端数据库宕机,
那么这个 writeHost 绑定的所有 readHost 都将不可用。另一方面,由二这个 writeHost 宕机系统会自动的检测
到,并切换到备用的 writeHost 上去。