[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)
*
- 【mysql的编程专题①】流程控制与其他语法
- 【mysql的编程专题②】触发器
- 【mysql的编程专题③】内置函数
- 【mysql的编程专题④】存储过程
- 【mysql的编程专题⑤】自定义函数
- 【mysql的编程专题⑥】视图
- 【mysql的设计与优化专题(1)】ER图,数据建模与数据字典
- 【mysql的设计与优化专题(2)】数据中设计中的范式与反范式
- 【mysql的设计与优化专题(3)】字段类型与合理的选择字段类型
- 【mysql的设计与优化专题(4)】表的垂直拆分和水平拆分
- 【mysql的设计与优化专题(5)】慢查询详解
- 【mysql的设计与优化专题(6)】mysql索引攻略
- 【Mysql问题集锦(1)】mysql不能使用innodb存储引擎
- 【Mysql进阶技巧(2)】利用mysql生成唯一序号
- 【Mysql进阶技巧(1)】MySQL的多表关联与自连接
- 【Mysql高可用架构(1)】基于日志点的主从复制
- 【Mysql高可用架构(2)】主从管理的系统视图
- 【Mysql高可用架构(3)】基于GTID的主从复制
- 【Mysql高可用架构(4)】在线变更复制类型
- 【Mysql高可用架构(5)】多源复制(多主一从)
- 【Mysql高可用架构(6)】多线程复制
- 【Mysql高可用架构(7)】在线设置复制过滤
- 【Mysql高可用架构(8)】解决主从不一致
- 【Mysql高可用架构(9)】初识mycat以及制作mycat镜像
- 【Mysql高可用架构(10)】mycat配置mysql读写分离
- MyCat 集群部署(HAProxy + MyCat)
- 常用复杂sql语句整理