Mycat实现读写分离
概述
通过Mycat和MySQL的主从复制配合搭建数据库的读写分离,实现MySQL的高可用性。我们将搭建:一主一从、双主双从两种读写分离模式。
一主一从模式
一主一从模式是指一个主机用于处理所有写请求,一台从机负责所有读请求,架构图如下
1、搭建 MySQL 数据库主从复制
具体实现过程,MySQL主从复制配置过程
2、修改Mycat的配置文件schema.xml
之前的配置已分配了读写主机,是否已实现读写分离?
验证读写分离
(1)在写主机插入:insert into uservalues (1,@@hostname);
主从主机数据不一致了
(2)在Mycat里查询:select * from user;
修改的balance属性,通过此属性配置读写分离的类型
负载均衡类型,目前的取值有4 种:
balance取值 | 类型说明 |
---|---|
0 | 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上 |
1 | 全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡 |
2 | 所有读操作都随机的在 writeHost、readhost 上分发 |
3 | 所有读请求随机的分发到 readhost 执行,writerHost 不负担读压力 |
为了能看到读写分离的效果,把balance设置成2,会在两个主机间切换查询
3、启动Mycat
4、验证读写分离
(1)在写主机数据库表mytbl中插入带系统变量数据,造成主从数据不一致
insert into user(name,source) values('C0055',@@hostname);
(2)在Mycat里查询user表,可以看到查询语句在主从两个主机间切换
双主双从模式
一个主机m1用于处理所有写请求,它的从机s1和另一台主机m2还有他的从机s2负责所有读请求。
当m1主机宕机后,m2主机负责写请求,m1、m2互为备机。架构图如下
角色 | IP地址 | 节点名称 |
---|---|---|
Master1 | 192.168.67.140 | CentOS01 |
Slave1 | 192.168.67.130 | CentOS02 |
Master2 | 192.168.67.180 | CentOS04 |
Slave2 | 192.168.67.190 | CentOS05 |
1、搭建 MySQL 数据库主从复制(双主双从模式)
具体实现过程,MySQL主从复制配置过程(双主双从模式)
2、修改Mycat的配置文件schema.xml
修改的balance属性,通过此属性配置读写分离的类型
负载均衡类型,目前的取值有4 种:
balance取值 | 类型说明 |
---|---|
0 | 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上 |
1 | 全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡 |
2 | 所有读操作都随机的在 writeHost、readhost 上分发 |
3 | 所有读请求随机的分发到 readhost 执行,writerHost 不负担读压力 |
为了能看到读写分离的效果,把balance设置成1
- balance=“1”: 全部的readHost与stand by writeHost参与select语句的负载均衡。
- writeType=“0”: 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个
- writeType=“1”,所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐
- writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties
- switchType=“1”: 1 默认值,自动切换。
- -1 表示不自动切换
- 2 基于 MySQL 主从同步的状态决定是否切换。
…
<dataNode name="dn1" dataHost="host1" database="testdb" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1"
slaveThreshold="100" >
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.67.140:3306" user="root" password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS1" url="192.168.67.130:3306" user="root"
password="123456" />
</writeHost>
<writeHost host="hostM2" url="192.168.67.180:3306" user="root" password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="192.168.67.190:3306" user="root"
password="123456" />
</writeHost>
</dataHost>
…
3、启动Mycat
mysql -umycat -p123456 -P8066 -h 192.168.67.140
4、验证读写分离
(1)在写主机Master1数据库表userl中插入带系统变量数据,造成主从数据不一致
insert into user(name,source) values('test',@@hostname);
(2)在Mycat里查询user表,可以看到查询语句在Master2、Slave1、和Slave2主从三个主机之间切换
5、抗风险能力
停止数据库Master1
在Mycat里插入数据依然成功,Master2自动切换为写主机
insert into user(name,source) values('dead',@@hostname);
启动数据库Master1
在Mycat里查询user表,可以看到查询语句在Master1、Slave1和Slave2主从三个主机间切换
Master1、Master2互做备机,负责写的主机宕机,备机切换负责写操作,保证数据库读写分离高可用性
Mycat实现读写分离相关推荐
- SpringBoot 整合 MyCat 实现读写分离
作者:颜不喜 cnblogs.com/muycode/p/12603037.html MyCat一个彻底开源的,面向企业应用开发的大数据库集群.基于阿里开源的Cobar产品而研发.能满足数据库数据大量 ...
- 基于mycat的mysql_MySQL基于Mycat实现读写分离
基于Mycat实现读写分离 环境:mariadb主:192.168.200.129 Mariadb从:192.168.200.114 Mycat :192.168.200.112 (1) 安装j ...
- mycat 实现读写分离
1. mycat简介 mycat是一个开源数据库中间件:它可以管理你的所有数据库,并对他们进行读写分离,分库分表等. 使用起来的话Mycat就是一个近似于MySQL的数据库服务器,你可以用连接MySQ ...
- MySQL 集群(三):MySQL + Mycat 实现读写分离,主备切换集群
MySQL 集群(三):MySQL + Mycat 实现读写分离,主从切换集群 下载 Mycat Mycat 主要文件 端口 Mycat 命令 配置文件 server.xml schema.xml 配 ...
- MyCat配置读写分离
分布式核心问题系列目录 分布式核心问题 - SSO单点登录 分布式核心问题 - 分布式锁 分布式核心问题 - 分布式接口幂等性设计 分布式核心问题 - MyCat实现读写分离 ------------ ...
- MySQL 案例实战--MySQL 基于Mycat实现读写分离
MySQL 基于Mycat实现读写分离 前言 一.什么是读写分离? 二.MySQL 读写分离解决方案 三.MySQL 基于Mycat实现读写分离 四.Mycat-web 管理部署 前言 本环境是基于 ...
- 【mycat】读写分离
在此之前,我们需要安装双主双从的mysql数据库 https://blog.csdn.net/wangyunzhao007/article/details/107330124 还需要安装mycat 一 ...
- MyCat实战--读写分离/数据分片/mycat集群/haproxy负载均衡
目录 简介 优势 关键特性 读写分离 安装mycat 配置mycat server.xml schema.xml rule.xml 启动mycat 停止mycat 连接mycat 测试 数据分片 配置 ...
- 用mycat做读写分离:基于 MySQL主从复制
mycat是最近很火的一款国人发明的分布式数据库中间件,它是基于阿里的cobar的基础上进行开发的 搭建之前我们先要配置mysql的主从复制,这个过程很长,我这里就不写了,有兴趣的可以看看我写的这篇文 ...
最新文章
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
- stdio.h头文件中申明的基本函数
- session_onend,你到底什么时候才能激发?
- UNIX再学习 -- 记录锁
- linux线程基础篇----线程同步与互斥
- WCF rest 的帮助页面和缓存机制
- Cocos2dx坐标转换
- cpuid linux,Linux下获取CPUID、硬盘序列号与MAC地址(2)
- YAM将于明日在DegenerativeFinance上发布uSTONKS
- 安卓9 怎么运行老程序_PLC怎么连接电脑?怎么把在电脑编程好的程序放入PLC运行?...
- 打开android studio项目,为什么我们没有一个文件来打开Android Studio项目?
- 猫眼(门镜)中的光学
- stc12c5a60s2制作4*4*4,光立方c语言程序怎么写,基于STC12c5a60s2单片机的3D显示屏设计...
- 实现流程管理的五个步骤
- Windows MinWG 编译 thrift
- 谷歌浏览器打开CSDN老是弹出安卓网页
- SQL 如何查询时竖着的数据横着显示
- matlab分析总谐波失真THD,运放参数的详细解释和分析-part21,总谐波失真(THD)
- java树莓派温度传感器_怎样使用树莓派读取传感器上的温度和湿度
- 查询rssi指令_RSSI测量方法及网络设备、终端设备与流程
热门文章
- 分享如何在Ubuntu 16.04下CUDA8.0
- 多个勒索软件团伙利用VMware的Log4Shell漏洞
- gin 获取post请求的json body操作详解
- JavaScript初学者编程题(22)
- mysql数据库导出mdf文件_数据库 导出mdf
- 线性基+树上倍增 ---- BZOJ4568[线性基+树上倍增]
- php数独游戏开发,使用vue如何开发数独游戏
- java redis 下载_redis Java源代码 redis.rar - 下载 - 搜珍网
- java 配置文件书写_配置文件的写法(properties类型)
- 2017 ACM ICPC Asia Shenyang Regional Contest 题解(10 / 13)【每日亿题2 / 16】