mycat实现读写分离

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mycat实现读写分离相关的知识,希望对你有一定的参考价值。

1.这里是在mysql主从复制实现的基础上,利用mycat做读写分离,架构图如下:

技术分享图片

mycat下载
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

解压即可
tar xf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

vim conf/server.xml

    <!--表示mycat的登录用户名-->

 <user name="test">

    <!--表示mycat的登录密码-->

    <property name="password">123</property>

    <!--表示mycat的逻辑数据库名称,可以自定义-->

    <property name="schemas">abc</property>

 <user name="testc1">

    <property name="password">123</property>

    <property name="schemas">abc</property>

    <property name="readOnly">true</property>

</user>

vim conf/schema.xml

   <!--TESTDB表示mycat的逻辑数据库名称

     当schema节点没有子节点table的时候,一定要有dataNode属性存在(指向mysql真实数据库)-->

<mycat:schema xmlns:mycat="http://io.mycat/">      

<schema name="abc" checkSQLschema="false" sqlMaxLimit="100" dataNode=‘dn1‘>

</schema>      

  <!--指定master的数据库my20180427-->                               

<dataNode name="dn1" dataHost="192.168.0.4" database="my20180427" />                                                                                                                                                    

 <!--指定mastet的ip -->

<dataHost name="192.168.0.4" maxCon="1000" minCon="10" balance="3"

         writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

    <!--表示mysql的心跳状态-->

    <heartbeat>select user()</heartbeat>

       <!-- master负责写 -->       

    <writeHost host="hostM1" url="192.168.0.4:3939" user="root"

   password="123">

    <!--slave负责读-->                        

    <readHost host="hostM1" url="192.168.0.5:3838" user="root"

   password="123">                        

    </readHost>                                

    </writeHost>                               

        </dataHost>                                                                                   

 </mycat:schema>       

到这里,利用mycat做读写分离就已经配置完了,注意 dataHost节点的下面三个属性

balance, switchType, writeType

balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。

balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。

balance="2",所有读操作都随机的在writeHost、readhost上分发。

balance="3",所有读请求随机的分发到writeHost下的readhost执行,writeHost不负担读压力

writeType表示写模式

writeType="0",所有的操作发送到配置的第一个writehost

writeType="1",随机发送到配置的所有writehost

writeType="2",不执行写操作

switchType指的是切换的模式,目前的取值也有4种:

switchType=‘-1‘ 表示不自动切换

switchType=‘1‘ 默认值,表示自动切换

switchType=‘2‘ 基于MySQL主从同步的状态决定是否切换,心跳语句为show slave status

switchType=‘3‘基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为show status like ‘wsrep%‘。

启动mycat
./bin/mycat start

连接 上mycat (mycat监听端口8066),登陆进行读写分离测试
mysql -utest -p -P8066 -h 127.0.0.1

参考 <https://www.cnblogs.com/520playboy/p/6159751.html>;

以上是关于mycat实现读写分离的主要内容,如果未能解决你的问题,请参考以下文章

springboot2.0+mycat实验读写分离

MySQL+MyCat分库分表 读写分离配置MySQL+MyCat分库分表 读写分离配置

用Mycat实现数据库读写分离分表分库

Mycat读写分离的简单实现

Mycat读写分离的简单实现

Mycat读写分离的简单实现