# Mycat **Repository Path**: codebyqinjingchao/Mycat ## Basic Information - **Project Name**: Mycat - **Description**: MyCAT is an Open-Source software, “a large database cluster” oriented to enterprises. - **Primary Language**: Java - **License**: GPL-2.0 - **Default Branch**: https/github.com/MyCATApache/Mycat-Server/tree/Mycat-server-1.6.76-test - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 10 - **Created**: 2022-06-30 - **Last Updated**: 2022-06-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # [MyCAT](http://mycat.org.cn//) 官网: http://mycat.org.cn/ 提交代码,可以开issue,写清楚代码改动或者联系qq:294712221 [Mycat2配置已稳定,尝试Mycat2](http://www.mycat.org.cn/mycat2-index.html) mycat1.6权威指南 [yuque](https://www.yuque.com/books/share/0576de75-ffc4-4c34-8586-952ae4636944) [pdf](http://mycat.org.cn/document/mycat-definitive-guide.pdf) [客户端连接配置](https://github.com/MyCATApache/Mycat-Server/wiki/%E5%BC%80%E5%8F%91%E7%AF%87%EF%BC%9A1.0-%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BF%9E%E6%8E%A5%E9%85%8D%E7%BD%AE) [log4j-2.15 lib](http://dl.mycat.org.cn/1.6.7.6/20211210225537/mycat16-log4j-2.15.zip) [](https://starchart.cc/MyCATApache/Mycat-Server) Mycat志愿者开发群:332702697,106088787 [](https://github.com/MyCATApache/Mycat-Server/issues) [](https://github.com/MyCATApache/Mycat-Server/network) [](https://github.com/MyCATApache/Mycat-Server/stargazers) [](http://mycat.io/) MyCAT is an Open-Source software, “a large database cluster” oriented to enterprises. MyCAT is an enforced database which is a replacement for MySQL and supports transaction and ACID. Regarded as MySQL cluster of enterprise database, MyCAT can take the place of expensive Oracle cluster. MyCAT is also a new type of database, which seems like a SQL Server integrated with the memory cache technology, NoSQL technology and HDFS big data. And as a new modern enterprise database product, MyCAT is combined with the traditional database and new distributed data warehouse. In a word, MyCAT is a fresh new middleware of database. Mycat’s target is to smoothly migrate the current stand-alone database and applications to cloud side with low cost and to solve the bottleneck problem caused by the rapid growth of data storage and business scale. 2020年1月1日合拼了一个PR,优化PartionByLong的分片算法,数据不均衡的问题,所以该分片算法与此前的PartionByLong的数据分布不一致,即1.675之后与之前的版本不兼容 MyCAT1.6不支持一个SQL包含多个语句 旧Mycat升级fastjson,把pom.xml中fastjson的版本更改即可 1.6的bug: 批处理插入,多语句,堆外合拼,请大家要避开这些功能 全局序列号语法 ```sql INSERT INTO `travelrecord` (`id`,user_id) VALUES ('next value for MYCATSEQ_GLOBAL',"xxx"); ``` 安装包下载: https://github.com/MyCATApache/Mycat-Server/releases MyCAT2.0 https://github.com/MyCATApache/Mycat2 更新Druid 1.1.10版本的分支独立维护在 https://github.com/MyCATApache/Mycat-Server/tree/1.6.6-druid docker-mycat(1.65) https://github.com/dekuan/docker.mycat * [Getting Started](https://github.com/MyCATApache/Mycat-doc/tree/master/en) * [尝试 MyCAT](https://github.com/MyCATApache/Mycat-doc/tree/master/%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97) ## Features * Supports SQL 92 standard * Supports MySQL cluster, used as a Proxy * Supports JDBC connection with ORACLE, DB2, SQL Server, simulated as normal MySQL Server connection * Supports MySQL cluster, percona cluster or mariadb cluster, providing high availability of data fragmentation clusters * Supports automatic failover and high availability * Supports separation of read and write, dual-master with multi-slave, single-master with multi-master of MySQL model * Supports global table, automatically fragment data into multiple nodes for efficient relational query * Supports the unique fragmentation strategy based on ER-relation for efficient relational query * Supports multiple platforms, easy deployment and implementation ## Advantage * Based on Alibaba's open-source project [Cobar](https://github.com/alibaba/cobar), whose stability, reliability, excellent architecture and performance, as well as many mature use-cases make MyCAT have a good starting. Standing on the shoulders of giants, MyCAT feels confident enough to go farther. * Extensively drawing on the best open-source projects and innovative ideas, which are integrated into the Mycat’s gene, make MyCAT be ahead of the other current similar open-source projects, even beyond some commercial products. * MyCAT behind a strong technical team whose participants are experienced more than five years including some senior software engineer, architect, DBA, etc. Excellent technical team to ensure the product quality of Mycat. * MyCAT does not rely on any commercial company. It’s unlike some open-source projects whose important features is enclosed in its commercial products and making open-source projects like a decoration. ## Roadmap * On the basis of MySQL’s support, MyCAT add more support of commercial open-source database, including native support of PostgreSQL, FireBird and other open-source databases, as well as indirect support via JDBC of other non-open-source databases such as Oracle, DB2, SQL Server etc. * More intelligent self-regulating properties, such as automatic statistical analysis of SQL, automatic creating and adjusting indexes. Based on the frequency of read and write, MyCAT automatically optimizes caching and backup strategies * Achieve a more comprehensive monitoring and management * Integrated with HDFS, provide SQL commands, load databases into HDFS for rapid analysis * Integrated excellent open-source reporting tools to make MyCAT have data analysis capability ## Download There are some compiled binary installation packages in Mycat-download project on github at [Mycat-download](https://github.com/MyCATApache/Mycat-download). ## Document There are some documents in Mycat-doc project on github at [Mycat-doc](https://github.com/MyCATApache/Mycat-doc). Mycat 简单demo,具体参考Mycat权威指南 官网 : mycat.io qq官方群:332702697 Mycat权威指南官方下载:https://github.com/MyCATApache/Mycat-Server/blob/4135f25df8239d52d220529cbf7cb697ede40e12/mycat-definitive-guide.pdf wiki: wiki # Mycat前世今生 2013年阿里的Cobar在社区使用过程中发现存在一些比较严重的问题,及其使用限制,经过Mycat发起人第一次改良,第一代改良版——Mycat诞生。 Mycat开源以后,一些Cobar的用户参与了Mycat的开发,最终Mycat发展成为一个由众多软件公司的实力派架构师和资深开发人员维护的社区型开源软件。 2014年Mycat首次在上海的《中华架构师》大会上对外宣讲,更多的人参与进来,随后越来越多的项目采用了Mycat。 2015年5月,由核心参与者们一起编写的第一本官方权威指南《Mycat权威指南》电子版发布,累计超过500本,成为开源项目中的首创。 2015年10月为止,Mycat项目总共有16个Committer。 截至2015年11月,超过300个项目采用Mycat,涵盖银行、电信、电子商务、物流、移动应用、O2O的众多领域和公司。 截至2015年12月,超过4000名用户加群或研究讨论或测试或使用Mycat。 Mycat是基于开源cobar演变而来,我们对cobar的代码进行了彻底的重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合,Join等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。1.4 版本以后 完全的脱离基本cobar内核,结合Mycat集群管理、自动扩容、智能优化,成为高性能的中间件。我们致力于开发高性能数据库中间而努力。永不收费,永不闭源,持续推动开源社区的发展。 Mycat吸引和聚集了一大批业内大数据和云计算方面的资深工程师,Mycat的发展壮大基于开源社区志愿者的持续努力,感谢社区志愿者的努力让Mycat更加强大,同时我们也欢迎社区更多的志愿者,特别是公司能够参与进来,参与Mycat的开发,一起推动社区的发展,为社区提供更好的开源中间件。 Mycat还不够强大,Mycat还有很多不足,欢迎社区志愿者的持续优化改进。 # 关键特性 支持SQL92标准 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。 支持多租户方案。 支持分布式事务(弱xa)。 支持全局序列号,解决分布式下的主键生成问题。 分片规则丰富,插件化开发,易于扩展。 强大的web,命令行监控。 支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。 支持密码加密 支持服务降级 支持IP白名单 支持SQL黑名单、sql注入攻击拦截 支持分表(1.6) 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。 # Mycat安装与使用 ## 下载: [https://github.com/MyCATApache/Mycat-download](https://github.com/MyCATApache/Mycat-download) 具体下载哪个版本以发布为准,推荐1.4,1.5. ## 安装: 下载的文件直接解压即可。 ## 运行: ### linux: ./mycat start 启动 ./mycat stop 停止 ./mycat console 前台运行 ./mycat install 添加到系统自动启动(暂未实现) ./mycat remove 取消随系统自动启动(暂未实现) ./mycat restart 重启服务 ./mycat pause 暂停 ./mycat status 查看启动状态 ### win: 直接运行startup_nowrap.bat,如果出现闪退,在cmd 命令行运行,查看出错原因。 ## 内存配置: 启动前,一般需要修改JVM配置参数,打开conf/wrapper.conf文件,如下行的内容为2G和2048,可根据本机配置情况修改为512M或其它值。 以下配置跟jvm参数完全一致,可以根据自己的jvm参数调整。 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=100m 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=-Xmx100m wrapper.java.additional.11=-Xms100m wrapper.java.additional.12=-XX:+UseParNewGC wrapper.java.additional.13=-XX:+UseConcMarkSweepGC wrapper.java.additional.14=-XX:+UseCMSCompactAtFullCollection wrapper.java.additional.15=-XX:CMSFullGCsBeforeCompaction=0 wrapper.java.additional.16=-XX:CMSInitiatingOccupancyFraction=70 以下配置作废: wrapper.java.initmemory=3 wrapper.java.maxmemory=64 ### Mycat连接测试: 测试mycat与测试mysql完全一致,mysql怎么连接,mycat就怎么连接。 推荐先采用命令行测试: mysql -uroot -proot -P8066 -h127.0.0.1 如果采用工具连接,1.4,1.3目前部分工具无法连接,会提示database not selected,建议采用高版本,navicat测试。1.5已经修复了部分工具连接。 # Mycat配置入门 ## 配置: --bin 启动目录 --conf 配置目录存放配置文件: --server.xml:是Mycat服务器参数调整和用户授权的配置文件。 --schema.xml:是逻辑库定义和表以及分片定义的配置文件。 --rule.xml: 是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改需要重启MyCAT。 --log4j.xml: 日志存放在logs/log中,每天一个文件,日志的配置是在conf/log4j.xml中,根据自己的需要可以调整输出级别为debug debug级别下,会输出更多的信息,方便排查问题。 --autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties, sequence_db_conf.properties 分片相关的id分片规则配置文件 --lib MyCAT自身的jar包或依赖的jar包的存放目录。 --logs MyCAT日志的存放目录。日志存放在logs/log中,每天一个文件 下面图片描述了Mycat最重要的3大配置文件: