天天看点

分布式数据库中间件Mycat

Mycat:分布式数据库中间件。对数据库用户而言,是数据库代理。Mycat将用户给到逻辑库的SQL语句路由到实际库,访问结果被Mycat处理后返回给用户(如:结果聚合)。Mycat可以屏蔽分库分表的影响,像操作整表整库一样操作分散的库和表。

http://www.mycat.io/官网下载,解压后在cmd中cd到mycat的bin目录,

安装:mycat install

启动:mycat start

停止:mycat stop

重启:mycat restart

Mycat的默认端口是:8066。实际库是Mysql时,Navicat连接Mycat时选择Mysql,但端口填写8066。JDBC的url为:    jdbc:mysql://Mycat的IP:Mycat的端口/Mycat逻辑库名称

关键配置文件

server.xml:逻辑库名称、逻辑库的用户名、密码、是否只读、全局序列号配置方式等。

schema.xml:配置逻辑库(包含的逻辑表)、逻辑表(表名、主键、实际表分布的数据节点、分片规则名称)。

数据节点(dataNode):实际库信息:实际库所在主机、访问端口,实际库的名称、用户名、密码。

rule.xml:分片规则配置(规则对应的Java类,Java类对应的配置文件)。常用包括枚举、范围、取模分片、时间分片等。

ER(Entity Relation)分片:父表和子表分片规则相同。子表有joinKey和父表的primaryId分辨记录所属分片。比如:订单表是父表,分期支付信息表是子表。订单信息根据订单号分片存储,分期支付信息也根据订单号分片存储。订单信息和对应的分期支付信息存储在同一个分片中,使关联查询更加快捷。ER分片提升跨表联查的效率。

全局序列号有本地文件、数据库方式等。本地文件方式读取速度快,但Mycat重新发布后配置文件的sequence会恢复到初始值,一般测试用。数据库方式:创建存放序列号名称、当前值、步长等信息的MYCAT_SEQUENCE表及相应函数。

在逻辑库操作逻辑表:

将SQL语句路由到逻辑表对应的实际表分布的数据节点。即将SQL语句路由到实际库。

EXPLAIN 加在SQL语句前,可以显示SQL语句执行对应的数据节点。

Mycat可以在主从机的基础上读写分离。Mycat想跨库联查、数据定义、insert select、读写分离中在写库读,必须加上注解。

Mycat有源码包,利于调试。

Mycat高可用(集群)可以借助Keepalived + HAProxy。

官网有PDF文档,很详细,适配Mycat1.6版本。http://www.mycat.org.cn/document/mycat-definitive-guide.pdf

官网的PDF没有书签。博主提供一个书签版:https://pan.baidu.com/s/1IAucICaT4hAggBn3rYJovw 密码:14xe

博主前面的内容只是一个引子,更丰富的功能在PDF里很详细,看看目录结构,知道有什么能用,用的时候按照文档操作细节即可。

继续阅读