今天继续给大家介绍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架构配置实战
由于MyCAT是基于JAVA环境的,因此,我们首先需要下载并安装java环境,在java官网上,将java环境下载到设备上,解压并放在如下目录,如下所示:
打开/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
如下所示:
完成上述操作后,我们需要重新加载该配置文件,执行命令:
source /etc/profile
这样,java环境就已经配置完成了,我们可以执行命令java -version来简单测试一下,如下图所示:
这样,我们的环境就已经准备完成了。
接下来,我们来安装MyCAT。
在官网下载MyCAT后,解压至/usr/mycat目录下,并在/etc/profile下写入如下内容:
MYCAT_HOME=/usr/mycat
PATH=$PATH:$MYCAT_HOME/bin
如下图所示:
这样,我们在启动mycat时,就不需要每次进入该安装目录,而是直接执行就可以了。
接下来,我们需要对MyCAT的配置文件进行配置。
1、server.xml文件配置
server.xml文件,主要是配置对外登录MyCAT的用户名和密码,在配置文件最下方user处,可以对用户名、密码和数据库进行配置,如下所示:
注意,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端口,如下所示:
之后,我们就可以登录MyCAT,如下所示:
然后尝试进行读、写操作,发现一些正常,如下所示:
最后,我们尝试关闭掉写库,发现MyCAT登录仍然正常,并且可以正常执行读操作,但是会拒绝写操作,如下所示:
综上,我们MyCAT读写分离架构配置成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200