Mycat入门

初识Mycat

是什么

Mycat是数据库中间件

1.数据库中间

中间件:是一类连接软件组件和应用的计算机软件,便于软件各个之间的沟通。

列如:Tomcat,web中间件

数据库中间件:连接java应用程序和数据库。

2.数据库中间件对比

数据库中间件(天上飞的理念,地上落地的实现)

数据库中间件出自
Cobar 阿里团队开发,已多年无维护更新
Mycat 基于Cobar二次开发 开源社区维护
OneProxy 不开源的商业中间件
Kingshard go语言开发,在不断完善
Vitess Youtube生产在使用,不支持Mysql原生协议
Atlas 360团队基于mysqlproxy改写,高并发下不稳定
MaxScale maxScale是mariadb研发的中间件
MysqlRoute mysqlRoute是MySQL官方Oracle公司发布的中间件

Mycat的历史

Mycat前身是阿里的Cobar.

Cobar是由Alibaba开源的 Mycat 分布式处理中间件,它可以在分布式的环境想看上去像传统的数据库一样提供海量数据服务。

Mycat官网

http://www.mycat.io/

 

干什么的

读写分离、数据分片、主从切换

 

原理

Mycat的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的sql语句,首先对SQL语句做了一定的分析:如分片分析,路由分析,读写分离分析,缓存分析等。然后将SQL发往后端的真实数据库,并将返回的结果做适当处理,最终返回给用户.

 

 

安装Mycat

docker安装

这里我是拉取别人已经做好的镜像(也可以自己制作镜像):

拉取镜像:

docker pull fify/mycat

 创建挂载目录

mkdir /cjh_docker/mycat/conf

 运行容器

docker run -it --name mycat fify/mycat  /bin/bash

 复制 server.xml、schema.xml 、rule.xml到宿主机 

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

 有个默认账户: 用户名 root 密码 123456 逻辑库 TESTDB

我们可以通过可视化工具连接mycat。 我们开发者,可以把mycat就当做数据库用即可,虽然它是真实数据库的代理;

这里逻辑库的概念,对应用来说,相当于Mysql这类的真实数据库,是真实数据库的代理; 逻辑库可以对应后端多个物理数据库,逻辑库中并不保存数据;

 

原文地址:https://www.cnblogs.com/chenjiahao9527/p/14171430.html