Mycat简介
Mycat是一款数据库中间件,一端连数据库,一端连java应用,可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据,用于解决以下问题
- java与数据库紧耦合
- 高访问量、高并发对数据库压力
- 读写请求数据不一致
可以用来做 读写分离、数据分片、多数据源整合
Mycat的原理就是拦截用户发送的SQL语句,对SQL语句做特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL语句发送到真实数据库,并将返回的结果做适当的处理,最终再返回给用户
属于中间件代理,偏运维
概念
逻辑库Schema 就是数据库的概念
逻辑表Table 读写数据的表就是逻辑表,数据切分后,分布在一个或多个分片库中
分片表 需要切分到多个数据库实例的
1
<table name="order" dataNode="dn1,dn2" rule="mod_rule">
非分片表 不是所有的表数据量都很大,所以并不需要切分
1
<table name="camp" dataNode="dn1">
ER表 基于ER关系来进行数据分片,子表的记录需要和父表的记录在同一个数据分片上
全局表 这个表基本上很少变动,且数据量不大,类似于字典表。所有分片中都冗余一份
分片节点dataNode 数据被切分后,一张大表被分到不同的分片数据库上,每个分片表所在的数据库就叫做分片节点
节点主机dataHost 数据切分后,每一个分片节点不一定都会占用一个真正的物理主机,会存在多个分片节点在同一个物理主机的情况,这些分片节点所在的主机就叫做节点主机。为了规避单节点主机并发数限制,尽量将读写压力高的分片节点均衡的放在不同的节点主机
分片规则rule 按照某种规则将数据分到一个确定的分片中
全局序列号sequence 使用外部机制保证数据的唯一标识称为全局序列号
配置文件
有三个重要的配置文件
schema.xml
定义逻辑库,表、分片节点等内容rule.xml
定义分片规则server.xml
定义Mycat用户以及系统相关变量,如用户名、密码、端口等
命令
启动
在mycat/bin目录下进行启动,有两种启动方式
- 控制台启动
./mycat console
- 后台启动
./mycat start
- 查看启动状态
./mycat status
登录
mycat的数据端口是8066
1 | mysql -umycat -P 8066 -h127.0.0.1 -p |
reload命令
修改schema.xml后不需要重启,使用该命令可以进行配置文件更新
1 | reload @@config |
show命令
1 | 查看schema中配置的schema节点 |