目录
- 一.理论概述
- 二.环境
- 三.部署
一.理论概述
原理简述 参考文档 MyCAT主要是通过对SQL的拦截,然后经过一定规则的分片解析、路由分析、读写分离分析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做适当处理返回给客户端。
- 功能简述
- 对数据库分片 通过设置条件,将统一数据库中的数据分散的存储到多个数据库中,达到负载均衡的效果
- 水平拆分 同一张表的不同记录,根据表的某个字段的某种规则拆分到多个数据库(主机)上,这既是水平拆分。单库业务表可能会过于庞大,存在单库读写与存储瓶颈,这种情况可以通过水平拆分解决
- 垂直拆分 不同的表切分到不同的数据库(主机)上,这就是垂直拆分。
一般按照业务表进行分类,划分为不同的业务、模块库,耦合度越低,越容易做垂直拆分 - 读写分离
mycat功能也比较强大,本案例只是针对于读写分离进行测试
二.环境
ip | 角色 |
---|---|
192.168.111.8 | mycat |
192.168.111.100 | 写动作数据库 |
192.168.111.200 | 读操作数据库 |
三.部署
官网地址:http://www.mycat.io/
下载地址:http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
文档地址:http://www.mycat.io/document/Mycat_V1.6.0.pdf
- 部署mycat
[root@localhost ~]# tar zxf jdk-8u191-linux-x64.tar.gz
[root@localhost ~]# mv jdk1.8.0_191/ /usr/local/java8
[root@localhost ~]# rm -rf /usr/bin/java
[root@localhost ~]# echo 'export JAVA_HOME=/usr/local/java8' >> /etc/profile
[root@localhost ~]# echo 'PATH=$PATH:/usr/local/java8/bin' >> /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@localhost ~]# tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
[root@localhost ~]# groupadd mycat
[root@localhost ~]# useradd -r -g mycat mycat
[root@localhost ~]# chown -R mycat.mycat /usr/local/mycat/
#下面是添加环境变量
[root@localhost ~]# echo 'PATH=$PATH:/usr/local/mycat/bin' >> /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local
[root@localhost ~]# vim /usr/local/mycat/conf/server.xml
80 #连接mycat的用户名
81 123456 #连接mycat对应的密码
82 test #使用该用户名登录时,是用哪个数据库,这里写的是逻辑库名,在scheme.xml中会与物理库库名关联起来
94
#将这些注释掉,暂时用不到,我们只用上面一个用户
#这个配置文件就这些
5
6
7
8
9
10
11
#这些是提前定义的表,将这些表都写入dn1,dn1主机在下面配置文件会定义
14
#database指定物理数据库的库名,将dn1,关联到test1,test1在下面配置文件定义
15
#name:物理数据库名,与dataNode中dataHost对应
#calance:均衡负载的方式;1表示开启读写分离
#dbType:数据库类型
#writeType:写入方式
17 select user();
#heartbeat:心跳检测语句,注意语句结尾的分号要加。
18
20
21
22
24
#以上配置达到的效果就是192.168.111.100为主库,192.168.111.200为从库。
#Mycat主从分离只是在读的时候做了处理,写入数据的时候,只会写入到writehost,需要通过mycat的主从复制将数据复制到readhost
[root@localhost ~]# /usr/local/mycat/bin/mycat start
#启动服务
[root@localhost ~]# netstat -lnpt | grep 8066
tcp6 0 0 :::8066 :::* LISTEN 60034/java
[root@localhost ~]# yum -y install mariadb
[root@localhost ~]# mysql -u root -p123456 -h192.168.111.8 -P8066
#安装mysql工具,进行测试一下
[root@localhost ~]# mysql -u root -p123456 -h192.168.111.8 -P8066
MySQL [(none)]>
暂时完结...