MySQL读写分离详解(二)——MyCAT实战配置

今天继续给大家介绍MySQL相关知识,本文主要内容是MYCAT的实战配置。

一、实战环境

使用Vmware虚拟机,搭建实战情景下读写分离架构,一共使用三台虚拟机,相关信息如下:
MYCAT:192.168.136.11
MASTER:192.168.136.12
SLAVE:192.168.136.13
其中,MYCAT机器上安装MYCAT,对外提供数据库接入服务,对内按照SQL语句类型分别链接至不同的数据库。MASTER和SLAVE两台设备搭建主从同步架构。在本实验中,由于篇幅优先,MySQL主从同步实战就不给大家过多介绍了,对此还存在困惑的同学,可以查阅以下文章:MySQL主从同步(二)——M-S架构配置实战

二、JAVA环境安装

由于MyCAT是基于JAVA环境的,因此,我们首先需要下载并安装java环境,在java官网上,将java环境下载到设备上,解压并放在如下目录,如下所示:
MySQL读写分离详解(二)——MyCAT实战配置_第1张图片
打开/etc/profile文件,并且在文件最下方写入:

JAVA_HOME=/usr/java/jdk1.8.0_131
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$JAVA_HOME/jre/bin/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASS_PATH

如下所示:
MySQL读写分离详解(二)——MyCAT实战配置_第2张图片
完成上述操作后,我们需要重新加载该配置文件,执行命令:

source /etc/profile

这样,java环境就已经配置完成了,我们可以执行命令java -version来简单测试一下,如下图所示:
MySQL读写分离详解(二)——MyCAT实战配置_第3张图片
这样,我们的环境就已经准备完成了。

三、MyCAT安装

接下来,我们来安装MyCAT。

(一)MyCAT写入环境变量

在官网下载MyCAT后,解压至/usr/mycat目录下,并在/etc/profile下写入如下内容:

MYCAT_HOME=/usr/mycat
PATH=$PATH:$MYCAT_HOME/bin

如下图所示:
在这里插入图片描述
这样,我们在启动mycat时,就不需要每次进入该安装目录,而是直接执行就可以了。

(二)MyCAT配置文件

接下来,我们需要对MyCAT的配置文件进行配置。
1、server.xml文件配置
server.xml文件,主要是配置对外登录MyCAT的用户名和密码,在配置文件最下方user处,可以对用户名、密码和数据库进行配置,如下所示:
MySQL读写分离详解(二)——MyCAT实战配置_第4张图片
注意,schemas处所配置的数据库必须大写。
2、schema.xml配置
接下来,我们还需要配置schema.xml文件,文件内容如下所示:


DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <schema name="MYCAT" checkSQLschema="false" sqlMaxLimit="100" dataNode='dn1'>
        schema>
        <dataNode name="dn1" dataHost="dthost" database="mycat"/>
        <dataHost name="dthost" maxCon="500" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100">
        <heartbeat>select user()heartbeat>
        <writeHost host="Master" url="192.168.136.12:3306" user="root" password="root">
        writeHost>
        <writeHost host="Slave2" url="192.168.136.13:3306" user="root" password="root" />
        dataHost  >
mycat:schema>

在此文件中,需要修改的是数据库名,Master和Slave的IP地址和登录用户名密码,修改完成后,如下图所示:

注意,在该文件中,有两个参数,balance和switchtype,这两个参数作用如下:
balance指的是负载均衡类型,决定了MyCAT对SQL语句如何分发到下游的读设备(readhost)和写设备(writehost)中,目前的取值有以下四种:
0:不开启读写分离机制,所有的SQL读请求也发送到writehost中。
1:除了writehost之外,其余所有的readhost和stand by writehost会一起接受SQL读请求的负载均衡。
2:所有的读操作在writehost和readhost上随机分发。
3:所有的SQL读命令随机的分发到writehost对应的readhost上执行,writehost不承担读压力。
switchtype指的是切换的模式,决定了当目前的写库宕机后,其余的备用写库是否要进行切换,目前的取值也是以下四种:
-1:关闭自动切换功能,不进行自动切换。
1:表示自动切换。
2:表示基于MySQL主从同步的状态决定是否要进行自动切换。
3:表示采用基于MySQL galaxy Cluster的切换机制。
因此,在上述配置文件中,我们采取的是balance=1,switchtype=0,双writehost的方式,在这种配置方式下,第一个writehost是主库,第二个writehost是备用写库,。这样,因为balance=1,所以第二个备用写库会承担读的SQL操作,而第一个主写库则只会承担写的SQL操作。并且,当第一个writehost宕机后,第二个不能切换为主库。
可以看出,除了这样的写法外,还可以有其他的balance和switchtype的配置方式也可以达到同样的效果。我们可以根据不同的业务场景灵活的配置参数,以达到我们想要的最佳效果。

四、数据库授权操作

在MyCAT读写分离架构中,MyCAT需要能够登录并控制下游的读库和写库,在上述配置文件中,我们配置了对于Master和Slave的IP地址、用户名和密码,因此,我们需要在master和salve上对该配置的用户名和密码进行授权,相关命令如下:

grant all on *.* to 'root'@'192.168.136.11' identified by 'root';

五、实战效果检验

最后,让我们启动mycat,检查一下我们的配置是否成功,mycat启动命令为:

mycat start

启动完成后,会发现MyCAT以开始监听8066端口,如下所示:
MySQL读写分离详解(二)——MyCAT实战配置_第5张图片
之后,我们就可以登录MyCAT,如下所示:
MySQL读写分离详解(二)——MyCAT实战配置_第6张图片
然后尝试进行读、写操作,发现一些正常,如下所示:

MySQL读写分离详解(二)——MyCAT实战配置_第7张图片
最后,我们尝试关闭掉写库,发现MyCAT登录仍然正常,并且可以正常执行读操作,但是会拒绝写操作,如下所示:

综上,我们MyCAT读写分离架构配置成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

你可能感兴趣的:(MySQL,mysql,数据库,java,MyCAT,MySQL读写分离)