一直对Mysql分库分表有点兴趣,但是也一直停留在有兴趣的阶段,没有遇到能应用的场景。人生苦短,与其等一个机会,不如自己创造吧。稍微调研了下,选择使用Mycat这样一款开源产品。没有什么特别的理由,也不去讨论挖掘机哪家强,只是为了学习。
本机环境
- 电脑环境:Ubuntu 16.04
- JDK:1.8
- Docker version 1.11.2
- Mysql 5.7.13
- Mycat 1.5-RELEASE
- Navicat for Mysql
安装Mysql
为了测试方便,Mysql都跑在Docker上,关于Docker环境的安装这里就不说了,参照Daocloud。Docker成功安装之后,去DaoCloud镜像下载Mysql镜像docker pull daocloud.io/library/mysql:5.7.13
,下载完毕之后命令行执行sudo docker images
确认下,输出如下:
上图的两个镜像分别是Mysql和Daocloud工具包,暂时用不到其他镜像,这样就可以了。
因为肯定要用到多个mysql,所以下面先启动两个mysql服务,测试下环境:
命令行输入sudo docker ps -a
,输出如下,启动正常
本机安装Mysql客户端
本机只需要连接到服务端Mysql,所以只安装个客户端就可以了,命令行执行sudo apt-get install mysql-client
,安装完毕之后测试下,命令行执行mysql -h127.0.0.1 -P3306 -uroot -pbboyjing
、mysql -h127.0.0.1 -P3316 -uroot -pbboyjing
,两个都能连接上表示环境正常。
安装Navicat
图形界面的展示可能方便点,所以装个Navicat备用,直接官网下载就可以了,至于破解什么的,自己看着办。安装成功之后分别连上localhost的3306、3316端口测试下。
安装Mycat
Github下载对应系统版本,解压即可,目录结构如下:
- bin目录:存放执行脚本的命令
- catlet目录:自定义分片规则存放路径
- conf目录:存放各种配置文件
- lib目录:存放Mycat依赖的一些jar包
- logs目录:日志目录
下面到Mycat根目录下执行下bin目录的启动脚本试试看,要先安装jdk,这个就不说了。控制台执行sudo ./bin/mycat console
,输出如下,表示正常启动
若已经安装过jdk的情况下,出现Unable to start JVM: No such file or directory,可能是JAVA环境变量不在root用户下导致的,尝试下如下方法,若还是不成功,应该不会的。
至此,简单的可运行的Mycat环境搭建完毕,稍微了解下Mycat,简单的来说它就是一个拦截在数据库前面的代理,数据库访问请求先经过Mycat,然后根据分片规则分发到具体的主机来实现分库分表等功能。具体该怎么使用,下面慢慢来学习学习吧。