Mycat 是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。
一、下载并解压
下载地址:1、https://github.com/MyCATApache/Mycat-download。2、http://dl.mycat.io/
[root@mycat-server-01 /]# cd /usr/local/src/
[root@mycat-server-01 src]# wget https://raw.githubusercontent.com/MyCATApache/Mycat-download/master/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
[root@mycat-server-01 src]# tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
二、编辑MyCat的核心配置文件:schema.xml
[root@mycat-server-01 src]# vim /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" />
<dataNode name="dn1" dataHost="host01" database="mldn" />
<dataHost name="host01" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="10.73.150.91:3306" user="root"
password="888888">
</writeHost>
</dataHost>
</mycat:schema>
三、编辑MyCat的系统配置文件:server.xml
主要为了后边连接MyCat。
[root@mycat-server-01 src]# vim /usr/local/mycat/conf/server.xml
<user name="root">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>
四、启动MyCat
启动MyCat之前要先启动Mysql。
[root@mycat-server-01 src]# /usr/local/mycat/bin/mycat console
jvm 1 | 2017-11-27 18:16:22,503 [INFO ][WrapperSimpleAppMain] init result :finished 10 success 10 target count:10 (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:319)
jvm 1 | 2017-11-27 18:16:22,503 [INFO ][WrapperSimpleAppMain] localhost1 index:0 init success (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:265)
jvm 1 | MyCAT Server startup successfully. see logs in logs/mycat.log
可以看到启动成功的信息。
MyCat操作命令:
- 启动MyCat: mycat start ;
- 停止MyCat: mycat stop ;
- 前台运行: mycat console ;
- 重启服务: mycat restart ;
- 暂停: mycat pause ;
- 查看启动状态: mycat status ;
五、连接MyCat
目前 mycat 有两个端口,8066 数据端口,9066 管理端口。在这里我们使用命令行的方式登录。
连接管理端口:
[root@mysql-server-01 /]# /usr/local/mysql/bin/mysql -uroot -p123456 -h 192.168.1.16 -P9066 -D TESTDB
# 查看所有的可用命令:
mysql> show @@help;
+------------------------------------------+--------------------------------------------+
| STATEMENT | DESCRIPTION |
+------------------------------------------+--------------------------------------------+
| show @@time.current | Report current timestamp |
| show @@time.startup | Report startup timestamp |
| show @@version | Report Mycat Server version |
| show @@server | Report server status |
| show @@threadpool | Report threadPool status |
| show @@database | Report databases |
| show @@datanode | Report dataNodes |
# 查看所有的逻辑数据库:
mysql> show @@database;
+----------+
| DATABASE |
+----------+
| TESTDB |
+----------+
1 row in set (0.01 sec)
# 查看所有的数据节点:
mysql> show @@datanode;
+------+-----------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
| NAME | DATHOST | INDEX | TYPE | ACTIVE | IDLE | SIZE | EXECUTE | TOTAL_TIME | MAX_TIME | MAX_SQL | RECOVERY_TIME |
+------+-----------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
| dn1 | localhost1/mldn | 0 | mysql | 0 | 10 | 1000 | 161 | 0 | 0 | 0 | -1 |
+------+-----------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+
1 row in set (0.01 sec)
连接数据操作端口:
[root@mysql-server-01 /]# /usr/local/mysql/bin/mysql -uroot -p123456 -h 192.168.1.16 -P8066 -D TESTDB
# 可以看见的都是逻辑数据库:
mysql> show databases;
+----------+
| DATABASE |
+----------+
| TESTDB |
+----------+
1 row in set (0.00 sec)
# 使用指定的逻辑数据库:
mysql> use TESTDB;
Database changed
# 查看所有的数据表:
mysql> show tables;
+----------------+
| Tables_in_mldn |
+----------------+
| member |
+----------------+
1 row in set (0.01 sec)
参数说明:
- -h 后面是主机,即当前 mycat 安装的主机地址,本地可用 127.0.0.1 远程需要远程 ip;
- -u Mycat server.xml 中配置的逻辑库用户;
- -p Mycat server.xml 中配置的逻辑库密码;
- -P 后面是端口 默认 9066,注意 P 是大写;
- -d Mycat server.xml 中配置的逻辑库。
附:其他问题
1、修改 MyCat 运行时的 JDK (指定 JDK 运行 MyCat )
修改文件/data/software/mycat/mycat/conf/wrapper.conf
中的参数
#修改wrapper.java.command=java 为JDK的存放路径
#wrapper.java.command=java
wrapper.java.command=/data/software/jdk/jdk1.7.0_80/bin/java
wrapper.working.dir=..