一、mycat简介
MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。
MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度。
二、mycat下载安装
注意:因Mycat是用java开发的,所以需要在实验环境下安装java,官方建议jdk1.7及以上版本
下载mycat包并安装(http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz)
1、进入/usr/local/目录
[root@localhost /]# cd /usr/local/
2、创建mycat文件夹
[root@localhost local]# mkdir mycat
3、进入mycat文件夹
[root@localhost local]# cd mycat
4、通过wget命令下载mycat安装包
[root@localhost mycat]# wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
5、解压mycat安装包
[root@localhost mycat]# tar -xf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
6、打开/etc/profile文件,配置环境变量
在/etc/profile文件里加上下面两句,vim /etc/profile
export MYCAT_HOME=/usr/local/mycat/mycat export PATH=$PATH:$MYCAT_HOME/bin
7、使配置生效
[root@localhost mycat]# source /etc/profile
此时安装完毕
三、mycat读写分离配置
前提:mysql配置好了主从复制 我这里主库ip 192.169.1.9 从库ip 192.169.1.24
1、编辑 mycat的配置文件mycat/conf/server.xml
2、编辑mycat的配置文件mycat/conf/schema.xml
到这里,mycat读写分离就已经配置完了
注意 dataHost节点的下面三个属性 balance, writeType, switchType
balance
- balance="0" , 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
- balance="1" , 全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1 , M2-S2 , 并且M1与M2互为主备) ,正常情况下,M2,S1,S2都参与select语句的负载均衡。
- balance="2" , 所有读操作都随机的在writeHost,readHost上分发
- balance="3" , 所有读请求随机的分发到writeHost对应的readHost上执行,writeHost不负担读压力
writeType
- writeType="0" , 所有写操作发送到配置的第一个writeHost ,第一个挂了切到还生存的第二个writeHost,重启启动后以切换后的为准,切换记录在配置文件中:dnindex.properties.
- writeType="1" , 所有写操作都随机的发送到配置的writeHost, 1.5以后废弃不推荐
switchType
- switchType="-1" , 表示不自动切换
- switchType="1" , 默认值,自动切换
- switchType="2" ,基于mysql主从同步状态决定是否切换
四、启动mycat
进入mycat目录/usr/local/mycat/mycat,执行命令./bin/mycat start 来启动mycat ,启动mycat后,可以执行命令./bin/mycat status 查看是否启动成功
启动完成后用Navicat for MySQL连接mycat,连接成功! (mycat代理数据库端口默认是8066,所以这里客户端连接的是8066端口)
mycat官方地址 http://www.mycat.io
mycat官方文档下载地址 http://www.mycat.io/document/mycat-definitive-guide.pdf