文章目录
- 前言
- 一、springBoot 集成Mycat(1.6) 步骤:
- 二、query_cache_size unknown 处理:
- 总结:
前言
在springboot 项目中我们应该如何集成mycat 然后让其帮助我们进行数据的分库和分表处理呢。
一、springBoot 集成Mycat(1.6) 步骤:
因为mycat 是一个数据库的代理中间件,同spring-boot 整合 mybatis-plus 相同,只是将数据源改为 mycat 地址后,所有之前直接发送sql 到db 的sql 现在回直接发送到mycat 中间件,然后由mycat 复杂把sql 根据分片规则转发到不同的db 数据库进行执行;
搭建过程可以参考,这里不在累述:Idea+maven+spring-cloud项目搭建系列–4整合mybatis-plus;
搭建完成之后在 application.yml 中将数据连接更改为mycat 即可:
- 192.168.75.131:8066 为mycat 的连接地址;
二、query_cache_size unknown 处理:
搭建好项目后在程序里执行sql 会提示 query_cache_size unknown ,它的原因为:
mycat1.6 在拦截sql 时 会在sql 上增加 query_cache_size 参数,但是 改参数在MySQL从版本5.7.20开始,将query_cache_size功能标记为“deprecated(已弃用)”,并建议不再使用。然后,在MySQL 8.0版本中,彻底移除了query_cache相关的功能和参数,包括query_cache_size。
- 下载 mycat1.6 源码,找到 io.mycat.server.handler.SelectHandler 在100行修改代码,使用: SelectVariables.execute(c,stmt);源码地址:https://github.com/MyCATApache/Mycat-Server
- 然后编译成为class 文件,考虑到git 可能打开较慢这里将已经修改后的SelectHandler.class 放到网盘一份;链接: https://pan.baidu.com/s/1gVrylKfFY6oDkKi76A7uBg?pwd=fabc 提取码: fabc
- 将mycat 容器内对应的jar 拷贝到宿主机上后,替换Mycat-server-1.6.7.6-release.jar 的改class 文件 然后拷贝改jar 包替换容器的jar
- 重启mycat
总结:
springBoot 集成mycat 只需要将之前连接db 的数据源修改为 mycat 即可,其它都不用修改;因为mycat1.6 版本使用了query_cache_size 参数,所以将mycat 服务端的对应jar 进行替换;