美文网首页数据库
Mycat,入门篇

Mycat,入门篇

作者: 37ec6dd9fc1c | 来源:发表于2019-07-04 07:33 被阅读295次

    Mycat是什么

    Mycat是一款基于阿里开源产品Cobar而研发的开源数据库分库分表中间件(基于Java语言开发)。官网所言:Mycat国内最活跃的、性能最好的开源数据库中间件!

    • 一个彻底开源的,面向企业应用开发的大数据库集群
    • 支持事务、ACID、可以替代MySQL的加强版数据库
    • 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
    • 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
    • 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
    • 一个新颖的数据库中间件产品

    Mycat关键特性

    • 支持SQL92标准
    • 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法
    • 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理
    • 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群
    • 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
    • 基于Nio实现,有效管理线程,解决高并发问题
    • 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页
    • 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join
    • 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询
    • 支持多租户方案
    • 支持分布式事务(弱xa)
    • 支持XA分布式事务(1.6.5)
    • 支持全局序列号,解决分布式下的主键生成问题
    • 分片规则丰富,插件化开发,易于扩展
    • 强大的web,命令行监控
    • 支持前端作为MySQL通用代理,后端JDBC方式支持MySQL、PostgreSQL、Oracle、DB2、SQLServer、MongoDB、巨杉
    • 支持密码加密
    • 支持服务降级
    • 支持IP白名单
    • 支持SQL黑名单、sql注入攻击拦截
    • 支持prepare预编译指令(1.6)
    • 支持非堆内存(Direct Memory)聚合计算(1.6)
    • 支持PostgreSQL的native协议(1.6)
    • 支持mysql和oracle存储过程,out参数、多结果集返回(1.6)
    • 支持zookeeper协调主从切换、zk序列、配置zk化(1.6)
    • 支持库内分表(1.6)
    • 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)

    安装与使用

    • 下载(目前最新发行版是1.6.5):http://dl.mycat.io/

    • 安装:解压即可

    • 配置:Mycat是基于Java开发的,确保安装好了Java环境,可命令行输入:java -version 进行测试。Linux下还需配置Mycat的解压目录:vim /etc/profile,配置完成后使用:source /etc/profile:

    export JAVA_HOME=xxx
    export MYCAT_HOME=xxx
    
    • 运行(Linux):

      • ./mycat start 启动
      • ./mycat stop 停止
      • ./mycat console 前台运行
      • ./mycat install 添加到系统自动启动(暂未实现)
      • ./mycat remove 取消随系统自动启动(暂未实现)
      • ./mycat restart 重启服务
      • ./mycat pause 暂停
      • ./mycat status 查看启动状态
    • 运行(Windows):双击bin/tartup_nowrap.bat,如果出现闪退,可在cmd命令行运行,并查看出错原因

    • 内存配置:启动前,一般需要修改JVM配置参数,打开conf/wrapper.conf文件,可根据本机配置情况修改为512M或其它值

    # Java Additional Parameters
    #wrapper.java.additional.1=
    wrapper.java.additional.1=-DMYCAT_HOME=.
    wrapper.java.additional.2=-server
    wrapper.java.additional.3=-XX:MaxPermSize=64M
    wrapper.java.additional.4=-XX:+AggressiveOpts
    wrapper.java.additional.5=-XX:MaxDirectMemorySize=2G
    wrapper.java.additional.6=-Dcom.sun.management.jmxremote
    wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
    wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
    wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
    wrapper.java.additional.10=-Xmx4G
    wrapper.java.additional.11=-Xms1G
    
    • 连接测试:
      • 测试mycat与测试mysql完全一致,mysql怎么连接,mycat就怎么连接
      • 命令行:mysql -uroot -proot -P8066 -h127.0.0.1(其中,user和password可在conf/server.xml配置查找,8066是默认的服务端口,也可以在conf/server.xml中配置修改)
      • 客户端:1.3和1.4版本目前部分工具无法连接,会提示database not selected,建议使用高版本的Mycat,1.5版本已经修复了部分客户端工具的连接

    常见分库分表产品对比

    分库分表产品 MyCat Sharding-JDBC Cobar Cobar-client TDDL
    分库 未开源
    分表 未开源
    中间层
    ORM支持 任意 任意 任意 仅MyBatis 任意
    数据库支持 任意 任意 仅MySQL 任意 任意
    社区情况 活跃 活跃 停更 未知 未知

    文章已授权获得转载,原文地址:https://blog.mariojd.cn/mycat-introduction.html

    相关文章

      网友评论

        本文标题:Mycat,入门篇

        本文链接:https://www.haomeiwen.com/subject/pdbvcctx.html