Mycat-入门认识了解(一)

268人浏览 / 0人评论
  • 概括介绍
  1. Mycat官网:http://mycat.io/
  2. 大白话介绍:Mycat就是物理数据库(mysql/orcale)的server层,把原来通过程序控制分表分库、读写分离的逻辑抽离出来单独写了个服务。这样做的好处是什么呢?突然多个服务突然业务量暴涨,数据库压力扛不住了,要实现高可用的数据库架构怎么办,这个时候引入Mycat,就不用修改服务的代码了,Mycat还支持跨平台、跨语言、夸数据库,哪个技术屌性能好,就用哪个,还不用改服务的代码,就能实现分表分库,读写分离,并且对服务实现代码透明,是不是很棒。因为MyCat是Java写的,所以理论上jdbc支持的SQL都支持,例:mongo、oracle、mysql、MSsql。
  • 2.0版本功能(还在规划)
  1. 完全实现分布式事务,完全的支持分布式。
  2. 通过Mycat web(eye)完成可视化配置,及智能监控,自动运维。
  3. 通过mysql 本地节点,完整的解决数据扩容难度,实现自动扩容机制,解决扩容难点。
  4. 支持基于zookeeper的主从切换及Mycat集群化管理。
  5. 通过Mycat Balance 替代第三方的Haproxy,LVS等第三方高可用,完整的兼容Mycat集群节点的动态上下线。
  6. 接入Spark等第三方工具,解决数据分析及大数据聚合的业务场景。
  7. 通过Mycat智能优化,分析分片热点,提供合理的分片建议,索引建议,及数据切分实时业务建议。
  • Mycat架构图
  1. Mycat的通信协议是基于NIO的,所以天生支持高并发,内部对APP请求解析后通过Mycat逻辑库、逻辑表配置关系优化SQL然后在路由到物理机,并提供了通过Mycat监控也可以知道Mycat服务的资源信息。
  2. Mycat核心功能是通过应用的请求对物理数据库进行逻辑关系操作,而该逻辑操作主要由schema.xml、server.xml、rule.xml三个配置文件配置,server.xml主要系统、用户、日志监控配置信息的配置文件,schema.xml是配置逻辑表逻辑库的配置文件,一个逻辑库支持多个物理库,一个逻辑表支持多个物理表,表又分为分片表和非分片表、全局表、E-R关系表,rule.xml是水平分库时用的分片规则配置文件。

  • Mycat的高可用架构图
  1. 非常好理解,首先APP端先访问HA代理,HA代理通过Keepalived监控服务心跳实现高可用负载均衡请求代理,然后在转发请求到Mycat服务,Mycat又通过Zookeeper的主从集群实现高可用负载均衡,再通过Mycat调用真正的物理机实现高可用扩展架构。

  • Mycat限制,不适合的场景
  1. Mycat不支持的SQL语句

create table like xxxx/create table select xxxx,select into outfile  因为逻辑表对应多个物理表

select for update/select lock in share mode 使用要小心,不会抛异常,存在全局表时候 只会下发一个节点,到时数据不一致

跨库多表关联查询,子查询

多表UPDATE或是UPDATE分片键

跨分片UPDATE/DELETE [order by] LIMIT  因为在多节点执行,会出现多更新,多删除数据

  1. Mycat如何支持分布式事务

弱分布式事务

如果某一节点commit失败就无法保证事务一致性

  1. Mycat不适合的场景

不支持的SQL场景

关联查询满足不了的场景

事务强一致性的场景

  • Mycat优化

JVM参数优化
conf/wrapper.conf
wrapper.java.additional.5=XX:MaxDirectMemorySize=4G #JVM映射内存
对于Mycat独立服务器而言占系统内存的一半或3/2
server.xml系统参数优化
log4j2.xml

mysql 优化

支付宝扫码打赏 微信打赏

如果文章对您有帮助,欢迎移至上方按钮打赏,非常感谢你的支持!

全部评论