Mycat是什么?
开源的分布式数据库系统,是一个实现了 MySQL 协议的的 Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,
而其后端可以用 MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,
其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。
类似的中间件还有:TDDL\Sharding-JDBC\COBAR
MyCAT 支持多种数据库接入,如:MySQL、SQLServer、Oracle、MongoDB 等,推荐使用 MySQL 做集群。
分库分表后不影响应用层。
应用场景
单纯的读写分离,此时配置最为简单,支持读写分离,主从切换
分表分库,对于超过 1000 万的表进行分片,最大支持 1000 亿的单表分片
多租户应用,每个应用一个库,但应用程序只连接 Mycat,从而不改造程序本身,实现多租户化
报表系统,借助于 Mycat 的分表能力,处理大规模报表的统计
替代 Hbase,分析大数据
作为海量数据实时查询的一种简单有效方案,比如 100 亿条频繁查询的记录需要在 3 秒内查询出来结果, 除了基于主键的查询,还可能存在范围查询或其他属性查询,此时 Mycat 可能是最简单有效的选择
mycat入门
下载源码启动
下载源码 https://github.com/MyCATApache/
源码调试与配置
MyCAT 目前主要通过配置文件的方式来定义逻辑库和相关配置:
• MYCAT_HOME/conf/schema.xml 中定义逻辑库,表、分片节点等内容.
• MYCAT_HOME/conf/rule.xml 中定义分片规则.
• MYCAT_HOME/conf/server.xml 中定义用户以及系统相关变量,如端口等.
注:以上几个文件的具体配置请参考前面章节中的具体说明.
源码运行
MyCAT 入口程序是 org.opencloudb.MycatStartup.java,右键 run as .
需要设置MYCAT_HOME 目录,为你工程当前所在目录(src/main):设置完 MYCAT 主目录后即可正常运行 MyCAT 服务。
注:
若启动报错,DirectBuffer 内存不够,则可以再加 JVM 系统参数:XX:MaxDirectMemorySize=128M。
若报错java.lang.illegalArgumentException:Invalid Datasource:0,则是schema.xml配置错误。你可能没有定义数据库dn1,dn2,dn3等dataNode节点。
navicat连接mycat(localhost,8066,root/123456)
linux/windows下安装(略),参考http://dl.mycat.io/
实战-单库大表拆分 - 水平分片
1,135的数据库中添加数据库DB。
2,在DB上添加表order1,order2,order3
3,配置mycat的 schema.xml配置文件
4,启动mycat
5,验证:客户端登录mycat数据库 ,对表order插入数据,并查询。
实战-跨库分表
1,新建db2,db3数据库
2,如上配置
3,同样登录mycat数据库,往company添加数据,验证数据。
实战-读写分离
领取专属 10元无门槛券
私享最新 技术干货