# mycat **Repository Path**: longxian435/mycat ## Basic Information - **Project Name**: mycat - **Description**: 利用mycat做分表分库,具体实现增加对mysql的吞吐量 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-10-25 - **Last Updated**: 2024-12-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mycat #### 介绍 利用mycat做分表分库,具体实现增加对mysql的吞吐量 #### 软件架构 软件架构说明 简单的项目中利用mycat流程图 ![输入图片说明](https://images.gitee.com/uploads/images/2019/0723/193438_f811495a_4864477.png "未命名文件.png") #### 安装教程 - 1.我这里用mycat 1.6.release版本。 - 2.需要jdk1.7及以上版本。(可以是用低版本的,但是mycat的版本相对的需要降低,可以看官网 http://www.mycat.io/)。 - 3.我这里于springboot集成的。 - 4.是在linux服务器搭建的 #### 使用说明 - ** 1.第一步:下载mycat 1.6.release ** - ** 运行命令: 解压文件 tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz 会生成mycat文件夹 - **2.如果没有安装jdk1.7及以上版本的话,需要安装jdk1.7及以上。** - 这里只显示配置jdk1.7环境。 命令: vim /etc/profile export JAVA_HOME=/home/xm6f/dev/jdk1.7.0_80 export JRE_HOME=/home/xm6f/dev/jdk1.7.0_80/jre export MYCAT_HOME=/home/xm6f/dev/mycat export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MYCAT_HOME/bin - **3.修改wrapper.conf文件,配置jdk** - 文件位置在/mycat/config/wrapper.conf 命令 vi /mycat/config/wrapper.conf 修改: wrapper.java.command=%JAVA_HOME%/bin/java - **4.修改schema.xml文件** - 文件位置在/mycat/config/schema.xml ``` select user() ``` 具体可以参照 https://blog.csdn.net/tornadojava/article/details/54948662 - **5.修改server.xml文件** - /mycat/config/server.xml ``` 0 0 2 0 **8066** 9066 0 1 1m 1k 0 384m true 123456 TESTDB user TESTDB true ``` **注意:** - **TESTDB** - 是跟 schema.xml 文件中的 ``` ``` 的name属性是一样的。 - **6.rule.xml (这里有很多规则,分片,分表等规则)** - ``` id func1 user_id func1 sharding_id hash-int id rang-long > > > id > mod-long > > id murmur id crc32slot create_time partbymonth calldate latestMonth id rang-mod id jump-consistent-hash 0 2 160 2 partition-hash-int.txt autopartition-long.txt > > > 2 > 8 128 24 yyyy-MM-dd 2015-01-01 partition-range-mod.txt 3 ``` **注意特殊位置的** **我这里用的是mod-long 及 取模算法 ** > 对应这个字段进行分库分表,通过这个字段值进行取模 > id > mod-long > > 分配到那几个节点上,按照需设置。 > > > 2 > 其他暂时不用配置了。 这样mycat服务就搭建好了。 最后友情提醒,将相关端口需要开放比如我配置8066,当然也可以将服务器防火墙关掉。 **_ ### 现在来整合springboot _** - **1.配置application.yml** - ``` spring: datasource: url: jdbc:mysql://mycat部署物理地址: **8066** /TESTDB?useUnicode=true&characterEncoding=UTF-8 username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver ``` **注意: ** 加粗的端口号( **8066** ),是在/mycat/config/server.xml中配置的,相关可以看上面 数据库名称( **TESTDB** ),是在文件位置在/mycat/config/schema.xml中配置的,相关可以看上面 到这里,整合全部完成。 **_ ### 结束语: _** - 1.mycat使用相当简单,是一款很出色的mysql的中间件,实际开发中还需要做一些处理,不然其性能可以不会很高。这是其原理决定的。 - 2.mycat做到了对业务代码完全解耦,比sharding-jdk这方面相对好很多(至少要在配置文件中配置分片等规则)。 - 3.相比较sharding-jdbc对于多表分片友好很多,不需要修改表结构。 #### 参考文章 https://blog.csdn.net/tornadojava/article/details/54948662 https://blog.csdn.net/qq_37936542/article/details/78613845