说明:本实验依赖于MySQL主从复制架构
所以MySQL主从复制就不再做演示,可以参考本人之前写的主从复制的博文
实验环境:
master:192.168.18.103
slave: 192.168.18.104
Mycat: 192.168.18.109
Mycat 服务器主机名:CentOS-4
Mycat 端需要安装 MySQL 服务
一、安装配置MySQL主从复制
链接:
https://www.jianshu.com/p/777cfa081739
二、安装Mycat
在安装Mycat之前应该先在Mycat服务器端安装好MySQL服务,但是由于太简单,而且之前写过安装MySQL社区版的博文,因此安装MySQL的过程省略……
1、安装配置jdk
说明:因为Mycat是基于Java开发的程序,所以在安装Mycat之前需要先安装配置好Java环境
1)先将提前准备好的jdk安装包上传到Linux
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# yum install lrzsz #安装lrzsz软件用于上传jdk安装包
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# ls
2)解压jdk
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# tar -zxf jdk-8u161-linux-x64.tar.gz -C /usr/local/
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# ls /usr/local/
bin etc games include jdk1.8.0_161 lib lib64 libexec sbin share src
[root@CentOS-4 ~]#
3)配置jdk
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# vim /etc/profile
#在配置文件最末尾加入以下4行内容即可:
export JAVA_HOME=/usr/local/jdk1.8.0_161
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@CentOS-4 ~]#
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# tail -4 /etc/profile #查看添加的4行内容
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# source /etc/profile #使环境变量生效
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# java -version #查看Java环境是否配置成功
2、安装并配置Mycat
Linux安装Mycat有以下4种方式:
以rpm包的方式安装;
以yum的方式安装;
以解压以后直接使用的方式安装;
以解压以后进行编译的方式安装
本次实验,我们采用“解压Mycat压缩包以后直接就能使用的方式”来安装
1)先将提前准备好的Mycat安装包上传到Linux
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# ls
2)解压Mycat
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# tar -zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# ls /usr/local/
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# ll /usr/local/mycat/
3)配置Mycat
3个非常重要的模块说明:
schema.xml :用于定义逻辑库、表,以及分片节点等内容
server.xml :用于定义用户和系统的相关变量,比如端口等
rule.xml :用于定义分片规则
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# ll /usr/local/mycat/conf/
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# cd /usr/local/mycat/conf/
(1)先配置修改 server.xml
主要修改用户信息,此用户是用户登录Mycat所使用的
[root@CentOS-4 conf]#
[root@CentOS-4 conf]# vim server.xml
[root@CentOS-4 conf]#
[root@CentOS-4 conf]#
(2)接着修改 schema.xml
由于schema.xml 配置模块中很多注释影响配置使用,所以我们需要先将这些用不到的注释信息全部删除,简化配置文件
[root@CentOS-4 conf]#
[root@CentOS-4 conf]# vim 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" >
</schema>
<dataNode name="dn1" dataHost="CentOS-4" database="testdb" />
<dataHost name="CentOS-4" 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="192.168.18.103:3306" user="root"
password="Ctsi.2020">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="192.168.18.104:3306" user="root" password="Ctsi.2020" />
</writeHost>
</dataHost>
</mycat:schema>
[root@CentOS-4 conf]#
[root@CentOS-4 conf]#
[root@CentOS-4 conf]# cat schema.xml
(3)验证Mycat是否可以远程登录到MySQL服务器
[root@CentOS-4 conf]#
[root@CentOS-4 conf]# mysql -uroot -p'Ctsi.2020' -h 192.168.18.103 -P 3306
[root@CentOS-4 conf]#
[root@CentOS-4 conf]# mysql -uroot -p'Ctsi.2020' -h 192.168.18.104 -P 3306
(4)启动Mycat
[root@CentOS-4 conf]#
[root@CentOS-4 conf]# cd /usr/local/mycat/bin/
[root@CentOS-4 bin]# pwd
/usr/local/mycat/bin
[root@CentOS-4 bin]#
[root@CentOS-4 bin]# ./mycat console #启动Mycat
3、登录Mycat
1)运维人员登录方式,用于管理维护Mycat
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# mysql -umycat -p'Mycat.2020' -P 9066 -h 192.168.18.105
2)登录数据窗口,通过Mycat查询数据
[root@CentOS-4 ~]#
[root@CentOS-4 ~]# mysql -umycat -p'Mycat.2020' -P 8066 -h 192.168.18.105
mysql>
mysql> show databases;
3)使用 Nivicat 远程连接 Mycat
4、操作Mycat
使用master当做远程客户端连接Mycat服务器,进行操作测试
[root@CentOS ~]#
[root@CentOS ~]# mysql -umycat -p'Mycat.2020' -P 8066 -h 192.168.18.105
mysql>
mysql> show databases;
mysql> use TESTDB;
mysql>
mysql> CREATE TABLE table_book(
-> table_book_id INT NOT NULL AUTO_INCREMENT,
-> table_book_title VARCHAR(100) NOT NULL,
-> table_book_author VARCHAR(40) NOT NULL,
-> submission_date DATE,
-> PRIMARY KEY ( table_book_id )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.11 sec)
mysql>
mysql> show tables;
mysql>
mysql> drop table table_book;
Query OK, 0 rows affected (0.26 sec)
mysql>
mysql>
mysql> show tables;
而且在操作Mycat的时候,我去后台数据库查看过,后台真实数据库会随着Mycat端的操作而进行同步改变
结论:使用Mycat中间件成功实现了与MySQL数据库集群的耦合
预告:下一篇博文将介绍使用Mycat实现MySQL主从复制架构的读写分离功能