Mycat入门
初识Mycat
是什么
Mycat是数据库中间件
1.数据库中间
中间件:是一类连接软件组件和应用的计算机软件,便于软件各个之间的沟通。
列如:Tomcat,web中间件
数据库中间件:连接java应用程序和数据库。
2.数据库中间件对比
数据库中间件(天上飞的理念,地上落地的实现)
出自 | |
---|---|
Cobar | 阿里团队开发,已多年无维护更新 |
Mycat | 基于Cobar二次开发 开源社区维护 |
OneProxy | 不开源的商业中间件 |
Kingshard | go语言开发,在不断完善 |
Vitess | Youtube生产在使用,不支持Mysql原生协议 |
Atlas | 360团队基于mysqlproxy改写,高并发下不稳定 |
MaxScale | maxScale是mariadb研发的中间件 |
MysqlRoute |
Mycat的历史
Mycat前身是阿里的Cobar.
干什么的
读写分离、数据分片、主从切换
原理
Mycat的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的sql语句,首先对SQL语句做了一定的分析:如分片分析,路由分析,读写分离分析,缓存分析等。然后将SQL发往后端的真实数据库,并将返回的结果做适当处理,最终返回给用户.
安装Mycat
拉取镜像:
docker pull fify/mycat
创建挂载目录
mkdir /cjh_docker/mycat/conf
运行容器
docker run -it --name mycat fify/mycat /bin/bash
docker cp mycat:/usr/local/mycat/conf/schema.xml /cjh_docker/mycat/conf/ docker cp mycat:/usr/local/mycat/conf/server.xml /cjh_docker/mycat/conf/ docker cp mycat:/usr/local/mycat/conf/rule.xml /cjh_docker/mycat/conf/
1)、schema.xml:定义逻辑库,表,分片节点等内容;
2)、rule.xml:定义分片规则;
3)、server.xml:定义用户以及系统相关变量;
删除之前的容器
将复制的文件挂载到容器:
docker run --name mycat -p 8066:8066 -v /cjh_docker/mycat/conf/server.xml:/usr/local/mycat/conf/server.xml -v /cjh_docker/mycat/conf/schema.xml:/usr/local/mycat/conf/schema.xml -v /cjh_docker/mycat/conf/rule.xml:/usr/local/mycat/conf/rule.xml -v --privileged=true -d fify/mycat
防火墙
firewall-cmd --zone=public --add-port=8066/tcp --permanent firewall-cmd --reload firewall-cmd --list-ports
我们可以通过可视化工具连接mycat。 我们开发者,可以把mycat就当做数据库用即可,虽然它是真实数据库的代理;