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,报错;
最终结果报错;
常用分片规则
全局序列