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

2、Demo

2.1 在mysql master上创建数据库创建db1

2.2 在数据库db1创建表student

同时,因为配置好了mysql主从复制,在mysql slave上也有一样数据库和表

2.3 编辑 mycat的配置文件server.xml

     <!--表示mycat的登录用户名-->
<user name="test">
<!--表示mycat的登录密码-->
<property name="password">test</property>
         <!--表示mycat的逻辑数据库名称,可以自定义-->
<property name="schemas">TESTDB</property>
</user> <user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>

2.4编辑mycat的配置文件schema.xml

<!--TESTDB表示mycat的逻辑数据库名称
当schema节点没有子节点table的时候,一定要有dataNode属性存在(指向mysql真实数据库),
-->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<!--指定master的数据库db1-->
<dataNode name="dn1" dataHost="192.168.0.4" database="db1" />
<!--指定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:3306" user="root"
password="admin">
<!--slave负责读-->
<readHost host="hostS2" url="192.168.0.5:3306" user="root" password="admin" />
</writeHost>
</dataHost>

到这里,利用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实现mysql数据库读写分离的更多相关文章

  1. Mycat实现Mysql数据库读写分离

    Linux和Windows环境下搭建Mycat数据读写分离 前提需要:1.服务器装有JVM虚拟机,就是JDK.2.两个Mysql数据库已经实现主从复制,参考:https://www.cnblogs.c ...

  2. MyCAT实现MySQL的读写分离

    在MySQL中间件出现之前,对于MySQL主从集群,如果要实现其读写分离,一般是在程序端实现,这样就带来一个问题,即数据库和程序的耦合度太高,如果我数据库的地址发生改变了,那么我程序端也要进行相应的修 ...

  3. spring+mybatis利用interceptor(plugin)兑现数据库读写分离

    使用spring的动态路由实现数据库负载均衡 系统中存在的多台服务器是"地位相当"的,不过,同一时间他们都处于活动(Active)状态,处于负载均衡等因素考虑,数据访问请求需要在这 ...

  4. 通过mycat实现mysql的读写分离

    mysql的主从配置沿用上一篇博客的配置:https://www.cnblogs.com/MasterSword/p/9434169.html mycat下载地址:http://www.mycat.i ...

  5. MySQL数据库读写分离、读负载均衡方案选择

    MySQL数据库读写分离.读负载均衡方案选择 一.MySQL Cluster外键所关联的记录在别的分片节点中性能很差对需要进行分片的表需要修改引擎Innodb为NDB因此MySQL Cluster不适 ...

  6. 170301、使用Spring AOP实现MySQL数据库读写分离案例分析

    使用Spring AOP实现MySQL数据库读写分离案例分析 原创 2016-12-29 徐刘根 Java后端技术 一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案 ...

  7. Linux安装Mycat1.6.7.4并实现Mysql数据库读写分离简单配置

    1. Mycat简介 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一 ...

  8. 161220、使用Spring AOP实现MySQL数据库读写分离案例分析

    一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案,更是最大限度了提高了应用中读取 (Read)数据的速度和并发量. 在进行数据库读写分离的时候,我们首先要进行数据库 ...

  9. 使用Spring AOP实现MySQL数据库读写分离案例分析

    一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案,更是最大限度了提高了应用中读取 (Read)数据的速度和并发量. 在进行数据库读写分离的时候,我们首先要进行数据库 ...

随机推荐

  1. androidactivity与webview结合

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" ...

  2. 分分钟知道tiles框架是干嘛的

    分分钟知道tiles框架是干嘛的 http://blog.sina.com.cn/s/blog_a123d4d50101792d.html参考上面的文章,简单明了.让你一下子就知道这个是用来做什么的. ...

  3. 单片机特殊功能寄存器(SFR)

    单片机如8051有21个SFR,地址为80H~0FFH的128个字节中,可以直接用寻址方式来操作SFR.(类似于sbit) 为了能直接访问这些SFR,keil提供饿了一种自汉族形式的定义方法.这种方法 ...

  4. 调用REST接口获取数据

    /// <summary> /// 根据机构代码本机构下报警用户列表: /// </summary> /// <param name="org_code&quo ...

  5. Python 字符串、元组、字典转换成列表

  6. SQL数据库约束行为---防止数据完全重复

    防止同一条数据完全重复: 一.主关键字约束:主键约束.1.能够唯一的区分每一行数据.——不许重2.表中的数据按照主键字排序的.——有序3.主键字不能为空——不为空4.一个表只能有一个主键,但可以设置组 ...

  7. 2.建立exception包,建立Bank类,类中有变量double balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount),当取款的数额大于存款时,抛出InsufficientFundsException,取款数额为负数,抛出NagativeFundsException,

    public class Bank { Double qian=0.0; double newBank(double a) { qian=qian+a; return qian; } double w ...

  8. [C和指针]第五部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. Windows Internals学习笔记(五)Synchronization

    参考资料: 1. <Windows Internals> 2. 自旋锁spinlock剖析与改进 3. Lock指令前缀 4. Lock指令前缀(二) 5. Kernel Dispatch ...

  10. STL--STL和她的小伙伴们:

    STL--概述: 标准模板库(StandardTemplateLibrary,STL),是C++程序设计语言标准模板库.STL是由Alexander Stepanov.Meng Lee和David R ...