Mycat背景与由来
Mycat的前身是阿里巴巴大名鼎鼎的Cobar,Cobar在开源了一段时间后,就没有再维护了,阿里巴巴放弃了该项目,再加上Cobar在使用过程中也发现存在一些问题。
2013年国内一批开源软件爱好者对Cobar这个项目进行了改进,并命名为Mycat,这就是MyCat的诞生。
MyCat是完全免费开源的,不属于任何商业公司。
Mycat于2014年首次在上海的《中华架构师》大会上对外宣讲,随后越来越多的项目采用了Mycat。
截至2015年11月,超过300个项目采用Mycat,涵盖银行、电信、电子商务、物流、移动应用、O2O的众多领域和公司。
Mycat官网:http://www.mycat.io/
Mycat是一个开源数据库中间件,是一个实现了MySQL协议的的数据库中间件服务器,我们可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问Mycat,而Mycat再使用用MySQL原生(Native)协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,包括SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储;
一般地,Mycat主要用于代理MySQL数据库,虽然它也支持去访问其他类型的数据库;
Mycat的默认端口是8066,一般地,我们可以使用常见的对象映射框架比如MyBatis操作Mycat。
通过Mycat可以自动实现写数据时操作主数据库,读数据时操作从数据库,这样能有效地减轻数据库压力,也能减轻IO压力。
实现读写分离,当主出现故障后,Mycat自动切换到另一个主上,进而提供高可用的数据库服务,当然我需要部署多主多从的模式
如果有了Mycat,客户端直接连接Mycat,可以实现读写分离,如果主出现问题,会自动切换到从服务器上
分库分表指的是对数据库数据的拆分,分为两种:水平拆分和垂直拆分。
● 水平切分(横向切分)
根据表中数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库服务器上面。
● 垂直切分(纵向切分)
按照不同的表来切分到不同的数据库服务器之上。
● 性能有瓶颈了,可以读写分离
● 数据库容量有瓶颈了,可以分库分表
1、下载
http://dl.mycat.io/1.6-RELEASE/
我们将08-MyCat\tools目录下下载好的Mycat直接上传到Linux上。
2、解压
tar –zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz –C /usr/local
3、Java语言开发的,直接解压即可使用
Tomcat
ZooKeeper
ActiveMQ
Mycat
1、 Mycat启动
切换到mycat的bin路径下,执行
./mycat start
2、Mycat关闭
切换到mycat的bin路径下,执行
./mycat stop
3、Mycat命令行(先了解,后面会用到)
登录mycat命令行,使用mysql的命令行工具来操作的:
./mysql -umycat -p -P8066 -h127.0.0.1
mycat默认数据访问端口是8066
4、MyCat配置文件
● server.xml
主要用于配置mycat需要的服务器信息
常用配置:
配置序列生成方式
配置mycat逻辑数据库
配置mycat的访问账户和密码
● schema.xml
用于配置的逻辑数据库的映射、表、分片规则、数据结点及真实的数据库信息;
常用配置:
配置逻辑库映射
配置垂直切分的表
配置真实的数据库
配置读写结点