实验环境:ubutu server 14

Master IP:172.16.34.212

Slave IP:172.16.34.34.156

Mycat server IP:172.16.34.219

不涉及过多理论,只有实现的过程。mysql读写分离和主备热切换,容灾,数据分片的实现手段目前比较流行的是Mycat。当然利用应用层代码去解决这些问题也是可以的。

1,首先到Github下载Mycat 1.6 版本的安装包,下载地址为:https://github.com/MyCATApache/Mycat-download

2,下载后解压到Mycat服务器某个目录

3,在主从复制的基础上去实现读写分离,主从复制可参考: http://www.cnblogs.com/NingKangMing/p/6110071.html

4,修改server.xml文件(此文件为Mycat的核心主配置文件,如user标签用于控制对外的可访问的用户及用户可访问的数据,是否只读等),我们配置一个euht用户,可访问数据库(schema.xml配置的逻辑数据库)为mycatdb,密码为123456,sql解析器为druidparser。默认端口8066。对外开放的用户名和密码为mycatuser,123456

<system>

<property name="defaultSqlParser">druidparser</property>

</system>

<user name="mycatuser">

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

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

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

</user>

5,修改schema.xml文件,(schema.xml用于配置MyCat的读写分离、水平垂直折分集群,逻辑库、表、分片规则、DataNode以及DataSource),参考配置如下

<schema name="mycatdb" checkSQLschema="false"  dataNode="datanoode1"/>

<dataNode name="datanoode1" dataHost="virtualHost" database="euhtnms" />

<dataHost name="virtualHost" maxCon="50" minCon="5" balance="3"

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

<heartbeat>select 1</heartbeat>

<writeHost host="whost1" url="172.16.34.212:3306" user="euht"  password="123456">

<readHost host="rhost1" url="172.16.34.156:3306" user="euht" password="123456" />

</writeHost>

</dataHost>

配置说明:

Schema标签:name指明schema逻辑数据库的名称,checkSQLschema是否去除sql语句中的数据库名称,如果sql查询语句没有limit语句,sqlMaxLimit为查询语句加上limit。

dataNode标签:定义节点,指定数据虚拟服务器,数据库等属性

dataHost标签:定义具体的数据库实例,读写分离配置,心跳包语句。maxCon属性指定每个读写实例连接池的最大连接。minCon属性指定每个读写实例连接池的最小连接。balance属性,目前的取值有 4 种。

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

balance="1",所有读操作都随机的发送到readHost

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

balance="3", 所有读请求随机分发到 wiriterHost 对应的 readhost 执行

writeType属性,负载均衡类型,目前的取值有3种:

1. writeType=”0”, 所有写操作都发送到可用的writeHost上。

2. writeType=”1”,所有写操作都随机的发送到readHost。

3. writeType=”2”,所有写操作都随机的在writeHost、readhost分上发。

switchType 属性:

-1 表示不自动切换

1 默认值,自动切换

2 基于MySQL 主从同步的状态决定是否切换

writeHost,readHost,heartBeat标签,定义真实服务器的读写Host,heartBeat为心跳包语句。以上定义了一主一从的读写分离机制,writeHost下可以有多个readHost。

6,测试读写分离

进入bin目录启动mycat (确保配置的读写分离Host已经配置了主从数据同步)

Sudo ./mycat start

查看Mycat是否正常启动(查看logs的wrapper.log)

Mycat已经成功启动,下面测试读写分离的效果

连接上Mycat(根据server.xml配置的用户名和密码,我配置的是mycatuser,123456,Mycat运行默认端口为8066)

已经成功连接到Mycat,并发现有一个mycatdb的虚拟数据库,其背后有主从两台服务器。

我们在主从复制未关闭的情况下插入一条数据到euhtnms的testtb看能否成功。

Show tables;发现背后的数据库表,这说明我们的mycat已经成功的和主备数据库中的数据库连接上了。先在有主从复制的情况下插入一条数据,再选出来看看。

到其背后的两台服务器看数据是否正常

主数据库的数据正常通过mycat代理层插入了。

从服务器的数据通过主从复制同步过来了。

查看读写分离是否成功,先测试是否读一定是从我们配置的156服务器读,我们可以先到156停掉主从复制(stop slave)。然后再从mycat代理端插入数据

我们看到,刚插入的数据没被select 出来。这是因为我们把主从复制关掉了。代理层只是把数据写到主服务器212.从服务没进行数据同步,此时再读,由于读服务器是156,所以只能查出以前的数据。此时再把slave打开,可以从代理层看到所有数据了。当读服务器宕机变得不可用将会用主服务器去读,反之一样。(打开slave后从代理端读的效果如下)

如果配置有双主结构,log_slave_updates 这个选项需要设置到myssql的my.cnf配置文件中

到此mycat的读写分离已经完成,当然这不是一个高可用的架构。要做到高性能,高可用,需要考虑很多因素.............有待更新。

Mycat实现读写分离,主备热切换的更多相关文章

  1. Mycat在MySQL主从模式(1主1从)下读写分离和及自动切换模式的验证

    实验环境 两台Centos7  MySQL5.7.12 IP地址为:192.168.10.36  192.168.10.37 一台Centos7 Mycat IP地址为:192.168.10.31 一 ...

  2. mycat(读写分离、负载均衡、主从切换)

    博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽 1.环境准备 1.1新增两台虚拟机 mycat01:192.168.247.81 mycat02:192.168.247 ...

  3. Mycat分布式数据库架构解决方案--Mycat实现读写分离

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 安装完 ...

  4. SpringBoot 整合 MyCat 实现读写分离

    MyCat一个彻底开源的,面向企业应用开发的大数据库集群.基于阿里开源的Cobar产品而研发.能满足数据库数据大量存储:提高了查询性能.文章介绍如何实现MyCat连接MySQL实现主从分离,并集成Sp ...

  5. Redis主备自动切换

    Sentinel(哨兵)是用于监控redis集群中Master状态的工具. 一.Sentinel作用  1.Master状态检测   2.如果Master异常,则会进行Master-Slave切换,将 ...

  6. 物理DG主备库切换时遇到ORA-16139: media recovery required错误

    在物理DG主备库切换时遇到ORA-16139: media recovery required错误 SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRI ...

  7. 云计算之路-阿里云上:RDS数据库连接数过万引发故障,主备库切换后恢复正常

    非常抱歉!今天 12:03-12:52 ,由于数据库连接数异常突增超过1万,达到了阿里云RDS的最大连接数限制,影响了全站的正常访问.由此给您带来麻烦,请您谅解. 在发现数据库连接数突增的问题后,我们 ...

  8. GoldenGate 传统抽取进程随 DataGuard 主备快速切换的方案(ADG 模式)

    环境描述: 1.节点描述 节点 IP 节点描述 11.6.76.221 GG 抽取端 / DG 节点,数据库版本号为 Oracle-11.2.0.3,与 11.6.76.222 组成 DataGuar ...

  9. Mycat的读写分离

    1. Mycat实现读写分离的部署: https://www.cnblogs.com/softidea/p/5447566.html springboot动态数据源的原理以及配置: Spring内置了 ...

随机推荐

  1. static的用法

    首先,看看变量的存储: int global ; int main() { int stackStore ; int heapStore* = (int *)malloc(sizeof(int)); ...

  2. Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境

    项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境.Tomcat环境.需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备): 开始创建工程: 1.创建 ...

  3. Discuz X2任务开发

    简单描述 由于公司的需求要在系统中添加任务管理,用户通过完成任务而获得一定的奖励,因此其设计过程需要考虑到: 1.由于任务都是在系统中相关功能块处做一些相关事情,比如说在做题系统中完成指定的试题[1] ...

  4. Bootstrap源码分析之dropdown

    源码分析: Dropdowns.scss:下拉框模块 Javascripts/bootstrap/dropdown.js:实现下拉框响应 实现功能及原理: 下拉选项卡,默认不能实现显示选中项的功能 原 ...

  5. Soundslice – 美妙乐谱!Web 技术高大上的应用

    Web 技术的不断发展让我们能够开发各种好玩的功能.这里给大家分享一个使用 HTML5 技术实现的在线乐谱,可以播放的哦,也可以选择一个片段进行循环播放.赶紧来体验一下:) 您可能感兴趣的相关文章 1 ...

  6. DOM事件类型详解

    一.表单事件: input事件当<input>.<textarea>的值发生变化时触发.此外,打开contenteditable属性的元素,只要值发生变化,也会触发input事 ...

  7. DOM中的事件处理概览与原理的全面剖析

    事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信,DOM支持大量的事件: 本文通过这几点向大家详细解析事件处理的基本原理:事件类型.事件目标.事件处理程序.事件对象.事件传播 最后再向 ...

  8. SharePoint 2013 配置基于表单的身份认证

    前 言 这里简单介绍一下为SharePoint 2013 配置基于表单的身份认证,简单的说,就是用Net提供的工具创建数据库,然后配置SharePoint 管理中心.STS服务.Web应用程序的三处w ...

  9. SP2013 SP1(kb28805502)补丁安装测试初体验

    安装完SP1(kb28805502)第一印象是整体页面加载浏览速度非常快了,在笔记本建立的虚拟机能达到肉眼感觉不到卡顿真的是非常快了. 1.新添加了页面个性化设置功能菜单 3.默认访问网站的页面显示, ...

  10. elipse + maven + tomcat + springMVC环境搭建

    1. java JDK安装 http://jingyan.baidu.com/article/b24f6c82c989da86bfe5dab2.html 2.eclipse安装 http://jing ...