参考
开发环境
名称 | 版本 |
---|---|
VMware® Workstation 12 Pro | 12.0.0 build-2985596 |
CentOS7 | CentOS-7-x86_64-DVD-2003.iso |
Linux | 3.10.0-1127.el7.x86_64 |
mysql | 5.7.16 |
mycat | 1.6 |
Navicat Premium | 12.1.16 |
测试用数据库
名称 | 描述 |
---|---|
IP | 192.168.114.128 |
数据库 | luoma_test_1 |
表名 | t1 |
用户名 | root |
密码 | 123456 |
安装 JDK1.8
Mycat 依赖 jdk,我们需要先安装 jdk,必须是 JDK7 或更高版本
Mycat 介绍
Mycat 是什么?是数据库中间件,介于数据库与应用之间,进行数据处理与交互的中间件服务,可以简单的理解成数据库代理,我们的应用只需要与数据库中间件交互,而无需关注复杂的数据库部署。
如上图所示,数据被分到多个分片数据库后,应用如果需要读取数据,就需要处理多个数据源的数据。如果没有数据库中间件,那么应用将直接面对分片集群,数据源切换、事务处理、数据聚合都需要在应用层直接处理,原本该是专注于业务的应用,将会花大量的工作来处理分片后的问题,最重要的是每个应用处理将是完全的重复造轮子。所以有了数据库中间件,应用只需要关注业务处理,大量的通用的数据聚合、事务、数据源切换都由数据库中间件来处理。
Mycat 可以做什么?
1.读写分离
2.数据分片
(1)垂直拆分
(2)水平拆分
(3)垂直+水平拆分
3.多数据源整合
Mycat 原理——“拦截”
Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,首先对 SQL 语句做了
一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。
Mycat 下载
Mycat 安装
1.拷贝文件并解压
(1)把文件 Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
拷贝到 Linux 下 /usr/local/
目录
(2)解压 tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
2.三个配置文件介绍
进入 cd /usr/local/mycat/conf
目录,可以看到三个文件
名称 | 描述 |
---|---|
schema.xml | 定义逻辑库,表、分片节点等内容 |
rule.xml | 定义分片规则 |
server.xml | 定义用户以及系统相关变量,如端口等 |
3.修改 schema.xml
vim /usr/local/mycat/conf/schema.xml
主要修改三个节点
<schema>
<dataNode>
<dataHost>
<?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">
</schema>
<dataNode name="dn1" dataHost="localhost1" database="luoma_test_1" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.114.128:3306" user="root"
password="123456">
</writeHost>
</dataHost>
</mycat:schema>
4.修改 server.xml
vim /usr/local/mycat/conf/server.xml
<user name="root">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>
5.修改 mycat 内存配置
vi /usr/local/mycat/conf/wrapper.conf
wrapper.java.additional.10=-Xmx4G
wrapper.java.additional.11=-Xms1G
6.配置 hostname(若已配置则忽略)
(1)查看主机名 hostname
[root@luoma conf]# hostname
luoma.centos
(2)配置 vi /etc/sysconfig/network
HOSTNAME=luoma.centos
(3)配置 vi /etc/hosts
在 127.0.0.1
和 ::1
末尾追加你的主机名
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 luoma.centos
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 luoma.centos
7.将 MyCat 配置到环境变量中
vi /etc/profile
增加如下内容
MYCAT_HOME=/usr/local/mycat
PATH=$MYCAT_HOME/bin:$PATH
执行 source 命令使配置生效
source /etc/profile
8.启动 Macat
(1)控制台启动 :去 /usr/local/mycat/bin
目录下 mycat console
(2)后台启动 :去 /usr/local/mycat/bin
目录下 mycat start
[root@luoma sysconfig]# mycat start
Starting Mycat-server...
Mycat 启动相关命令
命令 | 描述 |
---|---|
mycat start | 启动 MyCat |
mycat status | 查看启动状态 |
mycat stop | 停止 |
mycat restart | 重启 |
连接测试
1.后台管理窗口
mysql -uroot -p123456 -P9066 -h192.168.114.128
显示数据库
show database;
mysql> show database;
+----------+
| DATABASE |
+----------+
| TESTDB |
+----------+
1 row in set (0.00 sec)
显示帮助 show @@help;
2.数据窗口
(1)进入数据窗口
mysql -uroot -p123456 -P8066 -h192.168.114.128
ERROR 3009 (HY000): java.lang.IllegalArgumentException: Invalid DataSource:0
查询数据报错
mysql> select * from t1;
ERROR 3009 (HY000): java.lang.IllegalArgumentException: Invalid DataSource:0
原因
通过 Navicat Premium 12 访问数据库,可以看到通过 root 用户无法访问
修改数据库 root 用户访问权限
mysql -uroot -p123456
-- 修改 root 用户所有主机可以访问
update user set host = '%' where user='root';
-- 立即生效
flush privileges;
(2)查询
mysql> select *from t1;
+------+----------+
| id | content |
+------+----------+
| 1 | luoma1.1 |
| 2 | luoma1.2 |
+------+----------+
2 rows in set (0.15 sec)
(3)创建表和数据
create table t2(id int,content varchar(100));
insert into t2 values(1,'mycat1');
insert into t2 values(2,'mycat2');
在 luoma_test_1 中查看创建的表和数据