首页 > 其他分享 >MyCat实现读写分离

MyCat实现读写分离

时间:2023-04-07 19:33:07浏览次数:30  
标签:数据库 分离 节点 复制 Master MyCat 读写

1 读写分离

1.1 什么是读写分离?

将数据库的查询和其他需要使数据库数据发生变化的操作进行分开的操作。

基本的原理

让主数据库处理事务性的插入、修改、删除操作;

让从数据库处理查询操作。

1.2 为什么要做读写分离?

在数据库中数据极速增长的情况下,数据库的瓶颈不在于存储,而是计算,即查询。数据量越大,查询的效率越低,对于越复杂的查询语句,其消耗服务器的资源越强,有时甚至不输于死循环。

2 读写分离的方案

MyCat的读写分离是建立在MySQL主从复制的基础之上实现的,所以必须先搭建MySQL的主从复制环境,实现主从复制。

数据库的读写分离对于大型系统或者访问量很高的互联网来说,是必不可少的一个重要功能。

3 MySQL主从复制的常用拓扑结构

3.1 一主一从

最基础的复制结构,用来分担之前单台数据库服务器的压力,可以进行读写分离。

MyCat实现读写分离_读写分离

3.2 一主多从

当一台从库承受不了查询请求的压力时,可以添加多台从机,进行负载均衡,进一步分散数据库的压力。

MyCat实现读写分离_数据库_02

3.3 双主复制

对于一主一从、一主多从来说,Master 节点只有一个,存在单点故障的隐患,如果 Master 节点出现问题时,将导致整个集群不可用。

采用了双主复制后,两个节点互相将对方作为自己的 Master,同时自己又作为对方的 Slave 来进行复制,可以确保一个节点故障时,整个集群还能正常对外服务。

MyCat实现读写分离_MySQL_03

3.4 级联复制

级联结构是通过减少直接从属于 Master 节点的 Slave 节点数量,在 Slave 节点下继续挂载 Slave 节点,从而减轻 Master 节点的压力,分散复制请求,提高整个集群整体的复制效率。

MyCat实现读写分离_数据库_04

3.5 双主级联

为了解决一主多从时,单点故障带来的隐患,将双主复制和一主多从进行了整合。

从这里也能看出来,MySQL 的复制结构有很多种方式,复制的最大问题是数据延时,选择何种复制结构,需要根据项目使用的具体情况,从目标结构的延时给系统带来的影响进行评估,从而得出一种适合项目的最佳拓扑结构。

MyCat实现读写分离_数据库_05


标签:数据库,分离,节点,复制,Master,MyCat,读写
From: https://blog.51cto.com/u_113754/6176512

相关文章

  • JUC并发编程第十四章之StampedLock(读写锁的优化实践)
    JUC并发编程学习路线JUC并发编程第一章之进程/并发/异步的概念[理解基本概念]JUC并发编程第二章之CompletableFuture[加强版的线程]JUC并发编程第三章之Synchronized八锁案例[理解锁的对象]JUC并发编程第四章之公平锁/重入锁/死锁[常见锁的基本认识]JUC并发编程第五章之线程......
  • OpenCV图像像素读写操作
    常用类型介绍uchar类型typedefunsigneduint;typedefsignedcharschar;typedefunsignedcharuchar;typedefunsignedshortushort;Vec系列Vec+数字+字母:C++STLvector容器类似数字:Vec的长度字母:类型b:uchars:shortw:ushorti:intf:floatd:doubletypedefVec<uch......
  • IIC总线协议—读写EEPROM
    1、I2C简介I2C通讯协议(Inter-IntegratedCircuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。2、I2C物理层I2C总线只需要两条总线线路,一条双向串行数据线(SDA),一......
  • 教育-文件读写
    Excel数据读写excel是一个软件,可以打开不同格式的文件:xlsx(office2016)openpyxl  常用xls(office2003)xlrd  过时了安装依赖pipinstallopenpyxlimportopenpyxlworkbook=openpyxl.load_workbook(path)#导入工作簿workbook.worksheets#list[<Worksheet......
  • 有关IOS内存读写冲突
    有关IOS内存读写冲突在写内存相关代码时,获取已使用内存代码中报错lethostPort:mach_port_t=mach_host_self()varhost_size=mach_msg_type_number_t(MemoryLayout<vm_statistics_data_t>.stride/MemoryLayout<integer_t>.stride)varpagesize:vm_siz......
  • C语言——复杂指针的读写
     1int*(*(*(*abc)())[6])();2/*3*1、(*abc)()——函数指针4*2、(*(某1))[6]——某的数组的指针5*3、int*(*(某2))()——返回值为int*类型的某的函数指针6*组合方式:123217*组合:(以(指向((返回值为int*类型的(函数指针))数组)的指针)......
  • docker 部署mongoDB集群与读写分离
    一.生成key文件需要注意集群中所有机器都需要用同一个文件,否则会出现验证失败的情况#生成keyopensslrand-base64756>/data/volume/mongodb/configdb/mongo.key#设置访问权限chmod400/data/volume/mongodb/configdb/mongo.key 二.启动MongoDB的docker容器d......
  • MATLAB读写excel中指定sheet行列中的数据 and 去除含有NaN的行或者列
    matlab读写excel中指定sheet行列中的数据data=xlsread('data.xlsx','sheet1','c2:c12');xlswrite('newdata.xlsx',newdata,'Sheet1','p2:p12');matlab中去除含有NaN的行或者列b=a(all(~isnan(a),2),:);%删除含有NAN的行b=a(al......
  • 一文获知前后端分离开发的相关内容
    随着低代码开发技术的发展,办公自动化得到了旺盛发展。当前,前后端分离已经成为发展趋势,那么,大家知道前后端分离开发的具体内容是什么吗?要想了解这个问题,就可以通读本文获取有用的资讯,看看低代码平台服务商是如何实现前后端分离的,它们的内容都有哪些。1、前后端分离可以带来什么好......
  • 若分离HTML与CSS,要记得连接外部CSS文件
    使用下列代码即可连接,注意CSS文件名和HTML文件名相同:<linkrel="stylesheet"type="text/css"href="文件名.css">  应放在代码头,如下所示:<!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  &......