首页 > 数据库 >如何避免MYSQL主从延迟带来的读写问题?

如何避免MYSQL主从延迟带来的读写问题?

时间:2024-03-08 17:46:13浏览次数:31  
标签:binlog slave 读写 master MYSQL 从库 位点 主从 GTID

在MYSQL 部署架构选型上,许多公司都会用到主从读写分离的架构,如下是一个一主一从的架构,主库master负责写入,从库slave进行读取。

image.png

但是既然是读写分离,必然会面临这样一个问题,当在主库上进行更新后,有可能数据还没来得及同步到从库,但是这个时候又有读数据的需求,为了能正确读取出数据,这个时候就只有读主库了。但是这样做增加了主库的压力,违反了我们做读写分离的初衷。所以这一节我们就来针对这种情况探讨下,如何尽量的避免对主库的压力,尽量的从从库读取数据。

主从复制的原理

在探讨解决方案前,我们先要对主从复制的原理有所了解,数据库的操作都会记录到binlog,如下图所示,

image.png

1,从数据库(slave)会启动两个线程io_threadsql_thread ,通过io_thread将自身与主数据库(master)建立连接。

2,slave向master发出要同步的位置信息(包含同步的文件名和偏移量),表示需要从该位置发起同步。

3,主数据库master 将位置点后的binlog发送给slave, slave获取到本地形成relay log(中转日志)。

4, 接着通过sql_thread解析relay log,执行sql。

从主从复制的过程可以看出,主从延迟时间是 在主库master执行sql的时间点到从库通过解析relay log 执行sql后的时间点之间的差值。如果应用程序能够在master写入数据后等待这么一段时间,再去slave读取,就能正确的读取出来数据了。

但是这个时间差值是不确定的,究竟应用程序需要等待多久才去读取slave,就成了我们需要思考

标签:binlog,slave,读写,master,MYSQL,从库,位点,主从,GTID
From: https://www.cnblogs.com/hobbybear/p/18061516

相关文章

  • MySQL(四):InnoDB引擎底层解析
    官方文档地址:https://dev.mysql.com/doc/refman/8.3/en/innodb-storage-engine.html。InnoDB存储引擎有三大特性:双写机制、BufferPool、自适应Hash。InnoDB存储引擎架构的内存和磁盘结构如下:上述架构图描述了数据在内存和磁盘上的流转和存储流程,在实际开发......
  • 笔记(五):MySQL之事务概述
    一、什么是事务事务(Transaction):访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。当在数据库中更改数据成功时,在事务中更改的数据便会提交,不再改变。否则,事务就取消或者回滚,更改无效。二、事务的四大特性1、原子性(Atomicity)原子性是指事务包含的所有操作要么......
  • Linux如何设置文件和文件夹的读写权限
    如下ls-l<文件名>-rw-rw-r--一共有10位数,其中:最前面那个-代表的是类型(-文件d文件夹)中间那三个rw-代表的是所有者(user)然后那三个rw-代表的是组群(group)最后那三个r--代表的是其他人(other)这里再解释一下后面那9位数:r 表示文件可以被读(read)w 表示文件......
  • MySQL(三):MySQL的执行原理
    1、单表访问之索引合并-indexmergeMySQL中使用多个索引来完成一次查询的执行方法称之为索引合并(indexmerge)。索引合并算法有Intersection合并、Union合并、Sort-Union合并。1.1、Intersection合并Intersection合并,某个查询可以使用多个二级索引,将从多个二级索......
  • MySQL(二):MySQL中的系统库
    1、概述MySQL有几个系统数据库,包含了MySQL服务器运行过程中所需的一些信息以及一些运行状态信息。系统库作用performance_schemaMySQL服务器运行过程中的一些状态信息,是对MySQL服务器的一个性能监控,包括最近执行的语句,及花费的时间、内存使用情况等信息informa......
  • MySQL(一):整体架构
    1、整体概述  MySQL是由连接池、管理工具和服务、SQL接口、解析器、优化器、缓存、存储引擎、文件系统组成。1.1、ConnectionPool-连接池创建数据库连接是一个耗时的操作,连接池的作用就是将这些连接缓存下来,再次访问数据库时,可以直接用已经建立好的连接,提升服......
  • windows搭建rails环境中,mysql2 gem 安装error问题
    windows搭建rails环境中,mysql2gem安装error问题可以尝试使用下面几种方法:1. Uninstallingandreinstallingthegemwilloftensolvethisissuewithnoneedtodownloadandmovefilesaroundbyhand.Fromyourrailsappdirectory:>gemuninstallmysql2You......
  • docker 部署 django + mysql + vue 项目
    ​项目目录结构,在Vue和Django项目根目录下创建Dockerfile文件,在父级目录下创建docker-compose.yml文件Project#父级目录├─client#vue3项目目录│├─public│└─src│├─*files│├─*files│├─Dockerfile└─server#Django项......
  • mysql 导入的文件大小限制
    本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/323MySQL是一种流行的关系型数据库管理系统,支持导入各种类型的数据文件。然而,在导入文件时,可能会遇到文件大小的限制问题。默认情况下,MySQL的导入文件大小限制为1GB。这是通过m......
  • mysql 按条件排序:order by 高级用法之case when, if 复杂排序
    转载自:https://blog.csdn.net/weixin_44684303/article/details/124445293实例1原始数据顺序需要的效果:学科按照顺序语文,数学,英语分数倒序演示创建表CREATETABLE`student_score`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'主键',`student_i......