0%

Mycat简介

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
2
3
4
5
6
7
8
9
10
11
12
# 查看schema中配置的schema节点
show @@database
# 查看dataNode节点
show @@datanode
# 查看前端连接状态 可以杀死对应的连接 kill @connection 7
show @@connection
# 查看后端连接
show @@backend

# 查看mycat缓存
show @@cache

欢迎关注我的其它发布渠道