mycat搭建mysql的简单读写分离

一、导读

各位同学大家好,今天给大家分享一下用Mycat进行数据库的读写分离,本篇文章是基于上一篇的mysql主从复制。(传送门

二、环境准备

1. mycat下载安装(传送门)下载安装好就可以了
2. mysql主从复制环境

三、mycat目录结构

1. 根目录介绍

在这里插入图片描述

2. conf文件夹里面的目录介绍

在这里插入图片描述

四、配置读写分离信息(精简版配置,满足读写分离)

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
   	<!-- TEST 库为server.xml里面配置的数据库名称,一定要和server.xml里面的数据库对应上 -->
       <schema name="TEST" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
       <dataNode name="dn1" dataHost="localhost1" database="TEST" />
       <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
                         writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
               <heartbeat>select user()</heartbeat>
               <!-- 配置写服务器地址,用户名密码 -->
               <writeHost host="hostM1" url="localhost:3306" user="root"
                                  password="123456">
                       <!-- 配置读服务器地址,用户名密码 -->
                       <readHost host="hostS2" url="localhost:8099" user="root" password="123456"/>
               </writeHost>
       </dataHost>
</mycat:schema>

对于 dataHost 标签,它里面重要的参数列举如下:

balance指的负载均衡类型,目前的取值有4种:
1. balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
2. balance=”1”,全部的readHost与stand bywriteHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2- >S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。
3. balance=”2”,所有读操作都随机的在writeHost、readhost上分发。
4. balance=”3”,所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力
注意:balance=3只在1.4及其以后版本有,1.3没有。
writeType属性:
1.writeType=”0”,所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties.
2.writeType=”1”,所有写操作都随机地发送到配置的writeHost,1.5以后废弃不推荐。
switchType指的是切换的模式,目前的取值也有4种:
1. switchType=’-1’ 表示不自动切换
2. switchType=’1’ 默认值,表示自动切换
3. switchType=’2’ 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status
4. switchType=’3’基于MySQLgalary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%’。
注意:估计Mycat1.4才开始支持switchType。1.3版本配置该属性的话,日志里会报错:org.xml.sax.SAXParseException;lineNumber: 61; columnNumber: 86; Attribute “switchType” must bedeclared for element type “dataHost”。
MyCAT心跳检查询句配置为 show slave status ,dataHost 上定义两个新属性: switchType=”2” 与slaveThreshold=”100”,此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制,Mycat心跳机制通过检测 show slave status 中的 “Seconds_Behind_Master”,”Slave_IO_Running”,”Slave_SQL_Running”三个字段来确定当前主从同步的状态及Seconds_Behind_Master主从复制时延,当Seconds_Behind_Master>slaveThreshold时,读写分离筛选器会过滤掉此Slave机器,防止读到很久以前的旧数据,当主节点宕机后,切换逻辑会检查Slave上的Seconds_Behind_Master是否为0,为0时则表示主仅同步,可安全切换,否则不会切换。

五、配置mycat连接信息

在这里插入图片描述

六、启动mycat

启动mycat

./mycat start

重启mycat

./mycat restart

mycat默认连接端口市8066

七、连接mycat,测试读写分离

在这里插入图片描述
连接上之后,执行查询和插入语句,查看mycat日志,就可以知道sql语句在哪个mysql数据库上执行了。

猜你喜欢

转载自blog.csdn.net/qq_37054881/article/details/91391902