一、概述
Mycat社区开发的一款分布式关系型数据库(中间件)。它支持分布式SQL查询,兼容MySQL通信协议,以Java生态支持多种后端数据库,通过数据分片提高数据查询处理能力。
二、mycat1和mycat2的区别
功能 |
1.6 |
2 |
多语句 |
不支持 |
支持 |
blob值 |
支持一部分 |
支持 |
全局二级索引 |
不支持 |
支持 |
任意跨库join(包含复杂查询) |
catlet支持 |
支持 |
分片表与分片表JOIN查询 |
ER表支持 |
支持 |
关联子查询 |
不支持 |
支持一部分 |
分库同时分表 |
不支持 |
支持 |
存储过程 |
支持固定形式的 |
支持更多 |
支持逻辑视图 |
不支持 |
支持 |
支持物理视图 |
支持 |
支持 |
批量插入 |
不支持 |
支持 |
执行计划管理 |
不支持 |
支持 |
路由注释 |
支持 |
支持 |
集群功能 |
支持 |
支持更多集群类型 |
自动hash分片算法 |
不支持 |
支持 |
支持第三方监控 |
支持mycat-web |
支持普罗米斯,kafka日志等监控 |
流式合拼结果集 |
支持 |
支持 |
范围查询 |
支持 |
支持 |
单表映射物理表 |
不支持 |
支持 |
XA事务 |
弱XA |
支持,事务自动恢复 |
支持MySQL8 |
需要更改mysql8的服务器配置支持 |
支持 |
虚拟表 |
不支持 |
支持 |
joinClustering |
不支持 |
支持 |
union all语法 |
不支持 |
支持 |
BKAJoin |
不支持 |
支持 |
优化器注释 |
不支持 |
支持 |
ER表 |
支持 |
支持 |
全局序列号 |
支持 |
支持 |
保存点 |
不支持 |
支持 |
离线迁移 |
支持 |
支持(实验) |
增量迁移 |
CRC32算法支持 |
BINLOG追平(实验) |
安全停机 |
不支持 |
支持(实验) |
HAProxy协议 |
不支持 |
支持 |
会话粘滞 |
update后select会粘滞 |
update后select会粘滞且支持设置时间 |
全局表插入支持全局序列号 |
不支持 |
支持 |
全局表插入支持主表插入自增结果作为序列号 |
不支持 |
支持 |
外部调用的分片算法 |
不支持但可定制 |
支持 |
映射模型区别
三、安装
准备:
1、官方文件服务器地址:http://dl.mycat.org.cn/2.0/
2、当前最新版安装包地址:http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
3、额外需要准备jdk环境、一个正常运行的mysql实例,我这里采用mysql5.7。
步骤:
1、下载安装包到服务器/opt/soft下
cd /opt/soft
wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
2、解压文件,并进入到安装目录中
unzip mycat2-install-template-1.21.zip
cd mycat/
安装目录下有:
1、bin 脚本
2、conf 配置
3、lib 依赖
4、logs 日志
3、下载核心包
cd lib
wget http://dl.mycat.org.cn/2.0/1.22-release/mycat2-1.22-release-jar-with-dependencies.jar
4、修改默认数据库连接配置
cd conf/datasource
vim prototypeDs.datasource.json
prototypeDs.datasource.json(主要修改url、user、password)
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"READ_WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"prototypeDs",
"password":"123456",
"type":"JDBC",
"url":"jdbc:mysql://localhost:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"root",
"weight":0
}
5、启动,启动命令在bin目录,语法如下:
cd mycat/bin
#启动
./mycat start
#停止
./mycat stop
#前台运行
./mycat console
#重启服务
./mycat restart
#暂停
./mycat pause
#查看启动状态
./mycat status
6、测试,打开Navicat,创建一个新链接,输入端口:8066,用户名:root,密码:123456(默认用户名密码,可修改conf/users/root.user.json)
四、常见安装问题
1、启动脚本执行时报错
Unable to locate any of the following operational binaries:
/opt/soft/mycat/bin/./wrapper-linux-x86-64 (Found but not executable.)
/opt/soft/mycat/bin/./wrapper-linux-x86-32 (Found but not executable.)
/opt/soft/mycat/bin/./wrapper
执行如下命令可解决
cd /opt/soft/mycat/bin
chmod +x ./*
2、启动日志报错
INFO | jvm 1 | 2022/08/11 10:27:46 | WrapperSimpleApp: Unable to locate the class io.mycat.MycatCore: java.lang.ClassNotFoundException: io.mycat.MycatCore
INFO | jvm 1 | 2022/08/11 10:27:46 |
INFO | jvm 1 | 2022/08/11 10:27:46 | WrapperSimpleApp Usage:
INFO | jvm 1 | 2022/08/11 10:27:46 | java org.tanukisoftware.wrapper.WrapperSimpleApp {app_class} [app_arguments]
INFO | jvm 1 | 2022/08/11 10:27:46 |
INFO | jvm 1 | 2022/08/11 10:27:46 | Where:
INFO | jvm 1 | 2022/08/11 10:27:46 | app_class: The fully qualified class name of the application to run.
INFO | jvm 1 | 2022/08/11 10:27:46 | app_arguments: The arguments that would normally be passed to the
INFO | jvm 1 | 2022/08/11 10:27:46 | application.
STATUS | wrapper | 2022/08/11 10:27:48 | <-- Wrapper Stopped
缺少mycat核心包,将核心包下载后放到lib目录下(详见第三章第三步)
有兴趣的大佬大神可以关注下小弟的微信公共号,一起学习交流,扫描以下二维码关注即可。