bboyjing's blog

Mysql分库分表之Mycat学习笔记一【序】

一直对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确认下,输出如下:
图1
上图的两个镜像分别是Mysql和Daocloud工具包,暂时用不到其他镜像,这样就可以了。
因为肯定要用到多个mysql,所以下面先启动两个mysql服务,测试下环境:

1
2
sudo docker run --name mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=bboyjing -d daocloud.io/library/mysql:5.7.13
sudo docker run --name mysql2 -p 3316:3306 -e MYSQL_ROOT_PASSWORD=bboyjing -d daocloud.io/library/mysql:5.7.13

命令行输入sudo docker ps -a,输出如下,启动正常
图2

本机安装Mysql客户端

本机只需要连接到服务端Mysql,所以只安装个客户端就可以了,命令行执行sudo apt-get install mysql-client,安装完毕之后测试下,命令行执行mysql -h127.0.0.1 -P3306 -uroot -pbboyjingmysql -h127.0.0.1 -P3316 -uroot -pbboyjing,两个都能连接上表示环境正常。

安装Navicat

图形界面的展示可能方便点,所以装个Navicat备用,直接官网下载就可以了,至于破解什么的,自己看着办。安装成功之后分别连上localhost的3306、3316端口测试下。

安装Mycat

Github下载对应系统版本,解压即可,目录结构如下:
图3

  • bin目录:存放执行脚本的命令
  • catlet目录:自定义分片规则存放路径
  • conf目录:存放各种配置文件
  • lib目录:存放Mycat依赖的一些jar包
  • logs目录:日志目录

下面到Mycat根目录下执行下bin目录的启动脚本试试看,要先安装jdk,这个就不说了。控制台执行sudo ./bin/mycat console,输出如下,表示正常启动
图4
若已经安装过jdk的情况下,出现Unable to start JVM: No such file or directory,可能是JAVA环境变量不在root用户下导致的,尝试下如下方法,若还是不成功,应该不会的。

1
2
3
cd /opt
sudo chmod -R 777 mycat
./bin/mycat console

至此,简单的可运行的Mycat环境搭建完毕,稍微了解下Mycat,简单的来说它就是一个拦截在数据库前面的代理,数据库访问请求先经过Mycat,然后根据分片规则分发到具体的主机来实现分库分表等功能。具体该怎么使用,下面慢慢来学习学习吧。