Mycat
概述
why

Java应用程序 直接 访问MySQL数据库产生的问题:
Java应用程序 与 MySQL数据库 耦合;

解决:引入Mycat中间件
Java应用程序只需要关注Mycat,由Mycat负责与MySQL数据库通信;
高访问量、高并发对数据库的压力
可以增加多台MySQL数据库均衡压力;
读写请求访问量不一致
可以将一台专用作写请求,其他用作度请求;
what
1、数据库 中间件

2、数据库中间件对比

![]()


3、Mycat官网
http://www.mycat.io
Mycat能做什么
读写分离

数据分片
垂直分库

对于单个数据库,如果库内多个表都达到瓶颈,对该库会有很大的压力;
可以根据不同的业务,将该库内多个表 拆分到 不同业务的库中;
水平分表
对于单表数据量特别大时,可以将单表 拆分 不同的子表;
多数据源整合
原理


安装启动
Linux安装方式:

安装

启动



3、验证数据库访问正常

4、启动mycat

登录
1、登录后台管理窗口

2、登录数据窗口

搭建读写分离
![]()
一主一从

MySQL 主从复制




![]()




8、主库新增库、表、数据,看从库是否正常同步

Mycat配置
修改mycat的配置文件schema.xml


实际设置为1(双主双从)或3(单主单从)

双主双从



MySQL双主双从










![]()
![]()
![]()





Mycat配置
修改mycat的schema.xml






垂直拆分---分库



如何划分表


【同一台机器上的不同库的表可以join查询】
【不同机器上的不同库的表不能join查询】

配置分库
修改schema.xml文件

新增空白库

访问mycat进行分库

水平拆分---分表




配置分表

2、分表字段

3、修改mycat配置文件schema.xml

4、修改mycat配置文件rule.xml


(算法对应的结点数量)

Mycat的分片join
如果仅对orders表进行分片,在与orders_details进行join查询时,
仅DB1上有orders_details,会返回数据;
DB2由于没有orders_details,报错;
最终结果报错;






常用分片规则














![]()


全局序列
















浙公网安备 33010602011771号