mycat简介
mycat是一个数据库中间件,可以理解为一个数据库的代理层。
mycat的重要配置文件包括server.xml,schema.xml,rule.xml
-
server.xml
mycat的系统配置,用户权限控制,sql防火墙
-
schema.xml
配置逻辑库、表、分片规则、
-
rule.xml
定义了我们对表进行拆分所涉及到的规则定义
mycat安装
因为我本地的数据库是mysql8.0的,mycat-1.6.5下载下来的打包成果物不能满足要求。所以这里使用docker运行mysql5.7。
-
在docker hub上搜索mysql,查看mysql的容器构建
-
打开console,运行如下语句
docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -p 8066:3306 -d mysql:5.7
注意MYSQL_ROOT_PASSWORD输入密码,-p端口映射,8066是宿主的端口,3306是容器的mysql端口,5.7是安装的版本的tag
- 容器跑起来后,可以连接容器或者通过数据库连接工具连接,我这里使用的是datagrip这一工具,题外话datagrip是jetbrains公司开发的,支持几乎所有主流的rdbms。
#查看运行的容器,获得mysql容器的container id
docker ps
#连接其终端
docker exec -it <container_id> bash
#终端连接数据库
mysql -u root -p
- 使用工具连接mysql5.7

端口写localhost,port是8066
- 在mysql5.7的环境下创建数据库
create database db1;
create database db2;
create database db3;
- 修改mycat配置文件
打开conf文件夹下的server.xml,将下面两个选项重新配置
<property name="serverPort">7066</property>
<property name="managerPort">9066</property>
打开conf文件夹下的schema.xml,修改mysql5.7连接信息
<writeHost host="hostM2" url="localhost:8066" user="root" password="123456"/>
和创建docker mysql容器时参数对应
- 启动mycat
bin/mycat start
在logs下查看日志
- 连接mycat
使用工具连接端口写7066,数据库写TESTDB,这个是在server.xml中配置

混淆点
- server.xml中的连接信息是客户端或者应用与mycat连接的密码,schema中的user和password是实际运行的mysql的用户名和密码,两者是不相同的。
网友评论