# Mycat 安装和配置
## 前提
- 局域网中有一台 IP:192.168.1.111 已经安装好了一个 MySQL 5.6
## 部署的环境
- 系统:CentOS 6.7
- 系统 IP:192.168.1.112
- JDK:jdk-8u72-linux-x64.tar.gz
- Mycat:Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
## Mycat 安装
- 官网(页头有一个 PDF 要记得下载,这本资料写得很好):
- 官网下载(官网下载地址很乱,如果哪天右边这个地址不行了,到官网加群问下吧):
- 项目 Github:
- 此时(20170122) 最新稳定版本为:**1.6**,下载下来的文件名称:**Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz**
- 安装前的准备:
- 这台机子必须装有 JDK,并且配置好 JAVA_HOME。JDK 的安装看:
- 开始安装:
- 给 Mycat 创建专属系统用户,并设置密码:
- `useradd mycat`
- `passwd mycat`,进入设置密码,我习惯测试的时候密码为:123456
- 假设 Mycat 安装包的完整路径是:**/opt/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz**
- 解压:`cd /opt ; tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz`
- 移动解压的目录到官方建议的目录下:`mv /opt/mycat /usr/local/`
- 设置 Mycat 的环境变量
- `vim /etc/profile`,添加如下内容:
``` nginx
export MYCAT_HOME=/usr/local/mycat
export PATH=$PATH:$MYCAT_HOME/bin
```
- 刷新配置:`source /etc/profile`
- 到这里就安装好了,但是先不启动,需要先去配置相应的配置文件。
## Mycat 配置
- 使用 Mycat 这几个配置文件必定会改动到。这一个文件所代表的含义几句话说不了,还请你自己看下官网的文档。
- `rule.xml`,设置分片规则。
- `server.xml`,主要用于配置系统变量、用户管理、用户权限等。
- `schema.xml`,用于设置 Mycat 的逻辑库、表、数据节点、dataHost 等内容,分库分表、读写分离等等都是在这里进行配置的
- 其中特别注意的是分片节点的配置,如下,其中 db1,db2,db3 是需要我们自己在 IP 为:192.168.1.111 这台机子上人工创建这三个空白数据库。
``` nginx
```
- 假设你上面的配置文件都配置好了:
- 开放 8066 端口
- 如果只是临时测试,可以临时关掉防火墙:`service iptables stop`
- 不然就添加防火墙规则:
- 添加规则:`sudo iptables -I INPUT -p tcp -m tcp --dport 8066 -j ACCEPT`
- 保存规则:`sudo service iptables save`
- 重启 iptables:`sudo service iptables restart`
- 启动/停止/重启
- 启动有两种,一种是后台启动,启动后看不到任何信息。一种是控制台启动,启动后进入 Mycat 的控制台界面,显示当前 Mycat 的活动信息,按 Ctrl + C 停止控制台的时候 Mycat 也跟着停止。
- 进入 Mycat 目录:`cd /usr/local/mycat/bin`
- 后台启动:`./mycat start`,看到日志可以这样看:`tail -f /usr/local/mycat/logs/mycat.log`
- 控制台启动:`./mycat console`
- 重启:`./mycat restart`
- 停止:`./mycat stop`
- 连接 Mycat
- 连接 Mycat 的过程跟连接普通的 MySQL 表面上是没啥区别的,使用的命令都是一个样。但是需要注意的是,很容易出问题。对连接客户端有各种意外,目前我做了总结:
- 连接命令:`mysql -h192.168.1.112 -uroot -p -P8066`,然后输入 mycat 的 root 用户密码(在上面介绍的 server.xml 中配置的)
- **不建议** 的连接方式:
- SQLyog 软件,我这边是报:*find no Route:select * from `youmeek_nav`.`nav_url` limit 0, 1000*
- Windows 系统下使用 cmd 去连接,我这边是报:*ERROR 1105 (HY000): Unknown character set: 'gbk'*
- MySQL-Front 软件,没用过,但是别人说是有兼容性问题
- **建议** 的连接方式:
- Navicat for mysql 软件
- Linux 下的 MySQL 客户端命令行