🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[toc] ## 概述 Mycat的架构其实很好理解,Mycat是代理,Mycat后面就是物理数据库。和Web服务器的Nginx类似。对于使用者来说,访问的都是Mycat,不会接触到后端的数据库。 我们现在做一个主从、读写分离,简单分表的示例。结构如下图: ![](https://i.vgy.me/vrBX0J.jpg) | 服务器 | IP | 说明 | | --- | --- | --- | | Mycat | 192.168.0.2 | mycat服务器,连接数据库时,连接此服务器 | | database1 | 192.168.0.3 | 物理数据库1,真正存储数据的数据库 | | database2 | 192.168.0.4 | 物理数据库2,真正存储数据的数据库 | Mycat作为主数据库中间件,肯定是与代码弱关联的,所以代码是不用修改的,使用Mycat后,连接数据库是不变的,默认端口是8066。连接方式和普通数据库一样,如:jdbc:mysql://192.168.0.2:8066/ ## 安装 [官网](http://www.mycat.io/)下载最新的release版本。源码是已经编译过的,可以直接使用。 ~~~ wget http://dl.mycat.io/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz # 注意C是大写 tar zxvf ./Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz -C /usr/local/ cd /usr/local/mycat ~~~ 安装完成后,目录如下: | 目录 | 说明 | | --- | --- | | bin | mycat命令,启动、重启、停止等 | | catlet | catlet为Mycat的一个扩展功能 | | conf | Mycat 配置信息,重点关注 | | lib | Mycat引用的jar包,Mycat是java开发的 | | logs | 日志文件,包括Mycat启动的日志和运行的日志。 | ## 制作docker镜像 ~~~ FROM java:8-jre MAINTAINER by caiwen (xiaogang.zhou@qq.com) LABEL Description="使用mycat做mysql数据库的读写分离" ENV mycat-version Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz USER root COPY ./Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz / RUN tar -zxf /Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz ENV MYCAT_HOME=/mycat ENV PATH=$PATH:$MYCAT_HOME/bin WORKDIR $MYCAT_HOME/bin RUN chmod u+x ./mycat EXPOSE 8066 9066 CMD ["./mycat","console"] ~~~ **创建运行** ``` docker build -t mycat:v1 . docker run --name mycat -p 8066:8066 -p 9066:9066 -itd mycat:v1 ``` **docker-compose** ## 参考资料 * [mycat官网](http://www.mycat.io/) * [mycat的在线手册](https://github.com/MyCATApache/Mycat-Server/wiki/1-Mycat%E5%AF%BC%E5%BC%95) * [Mycat导引](https://github.com/MyCATApache/Mycat-Server/wiki/1-Mycat%E5%AF%BC%E5%BC%95) * [学会数据库读写分离、分表分库——用Mycat,这一篇就够了!](https://www.cnblogs.com/joylee/p/7513038.html) * [Docker制作数据库中间件Mycat源码镜像](https://blog.csdn.net/boonya/article/details/77700864) *