MySql主从同步延迟怎么办?

news2025/1/23 13:36:29

文章目录

    • 什么是MySQL主从架构
      • 主从架构的组成
      • 工作原理
      • 主从复制的步骤
      • 主从架构的优点
      • 主从架构的缺点
    • 什么是主从同步延迟
    • 为什么会导致主从延迟
    • 主从延时的排查和解决
    • 如果发现主从数据不一致怎么办?

我们常说的业务量越来越大,I/O访问频率过高,单机无法满足,就会用到读写分离之类的多库方案
所以我们首先要知道什么是MySQL主从架构

什么是MySQL主从架构

通过字面上来看,最起码要有两台数据库,并且他们的关系是主与从。MySQL主从复制就是将数据库群中一台或多台服务器作为主(master)数据库,其他数据库作为从(slave)数据库,然后指向主库,实时同步主库中的数据;当主库数据发生变化时,会将变化的数据实时同步到一个或多个从库。
这是一种数据库复制和分布式存储的解决方案,核心是将数据从一个主服务器(Master)复制到一个或多个从服务器(Slave)。这种架构主要用于数据备份、读写分离、负载均衡和高可用性。当然凡事都有两面性,如数据延迟和写入瓶颈,因此在设计系统时需要根据实际需求进行权衡
在这里插入图片描述

主从架构的组成

主服务器(Master):负责处理写操作(INSERT、UPDATE、DELETE 等),并将这些更改记录到二进制日志(binary log)中
从服务器(Slave):通过读取并应用主服务器的二进制日志来复制数据,通常用于处理读操作(SELECT)

工作原理

二进制日志(Binary Log):主服务器上的所有更改都会记录在一个二进制日志中
中继日志(Relay Log):从服务器从主服务器接收二进制日志的内容,并将其存储在自己的中继日志中
I/O线程:从服务器上的I/O线程负责从主服务器读取二进制日志,并写入中继日志
SQL线程:从服务器上的SQL线程负责读取中继日志,并将这些更改应用到从服务器的数据库中

主从复制的步骤

启动复制:在主服务器上启用二进制日志,并创建一个具有复制权限的用户
配置从服务器:配置从服务器,指定主服务器的地址、登录凭证等,并指定复制的起点
数据同步:在开始复制之前,通常需要将主服务器上的数据同步到从服务器
启动复制进程:在从服务器上启动复制进程,开始复制操作

主从架构的优点

数据冗余:提供数据备份,增加数据安全性
读写分离:通过从服务器处理读请求,可以提高系统的读取性能
负载均衡:分散数据库的访问压力,提高系统整体的处理能力
高可用性:当主服务器出现故障时,可以快速切换到从服务器,减少系统停机时间

主从架构的缺点

数据延迟:从服务器复制数据可能会有延迟,导致数据不一致的问题
故障恢复:当主服务器出现故障时,需要手动或通过自动化工具进行故障转移
写入瓶颈:所有的写操作都必须通过主服务器,可能会成为系统的瓶颈

什么是主从同步延迟

那么再说回什么是主从同步延迟,其实只要使用到了主从设计,基本都会有主从延迟的问题,只是说延迟的严重的程度不一样而已

从字面词汇解释:主从延时,通常指的是在数据库的主从复制架构中,从服务器(Slave)在接收并应用主服务器(Master)上的数据变更时所经历的时间延迟。具体来说,当主服务器上的数据发生变化后,这些变更需要通过复制机制同步到从服务器,而从服务器处理这些变更并完成数据同步所需的时间就构成了所谓的延时

一般来说几百毫秒以内可能都是能接受的范围

为什么会导致主从延迟

  1. 负载过高:这里其实不管主库还是从库的负载比较高,都可能会导致延迟。这里先额外说一个事情,很多人觉得主库负责写,从库只负责读,所以主库的配置需要高一点,从库低一点也无所谓,但其实这是一个误区,你要清楚所有写在主库的数据,在从库都需要写一遍,而且要求时延低的话,从库的压力其实并不比主库低。所以如果主库的并发量压力较高时,可能会导致从库来不及写入
    或者本身从库的负载较高了,因为从库都是串行去写入了,为了保证数据一致性,前面也说了其实从库就是把主库执行过的sql也同样的按顺序执行一次,如果中途可能因为执行其他查询或者某一个复杂的事务等,也可能导致无法及时处理同步过来的数据
  2. 网络延迟:主从服务器之间的网络延迟也会影响同步效率,这个字面也很好理解
  3. 硬件性能不足:如果从库的硬件性能不足,处理同步数据的速度会受到影响,这个在第一点里面也做过解释
  4. MySQL配置不合理:如sync_binlog和innodb_flush_log_at_trx_commit等配置不当可能导致延迟
  5. 锁等待:从库在执行同步操作时可能遇到锁等待,特别是大型查询语句

主从延时的排查和解决

先确认复制是否正常在运行,然后就是分析导致延时的原因

  • 使用show slave status命令,了解当前的延时情况
    • 查看Seconds_Behind_Master参数 NULL:表示I/O线程或SQL线程发生故障。0:表示主从复制状态正常,无延迟。正值:表示主从已经出现延时,数值越大,延迟越严重
    • Slave_IO_Running 和 Slave_SQL_Running:这两个状态都应该是Yes,如果不是,说明复制过程中断了
    • Last_IO_Error 和 Last_SQL_Error:如果复制出错,这里会显示错误信息
  • 检查主从机器之间的网络延迟,查看是否出现问题,如使用ping或traceroute命令来测试网络连接
  • 检查带宽限制,这个虽然一般不会出现,但是高负载时也可能带宽不够导致复制延迟
  • 检查主服务器的二进制日志和从服务器的中继日志文件大小,如果日志文件过大,可能会导致处理缓慢
  • 检查服务器资源是否有大的波动

解决办法就是先根据问题分析的原因来做不同的处理应对

  • 优化主从服务器的硬件配置,提升处理能力
  • 调整MySQL的复制配置,如修改sync_binlog和innodb_flush_log_at_trx_commit参数,以平衡数据安全性和性能
  • 网络优化,确保主从服务器之间的网络连接稳定且带宽充足
  • 业务逻辑优化,避免大事务和长耗时操作
  • 调整中继日志的配置,比如日志的大小和刷新策略,减少服务器的I/O压力

如果发现主从数据不一致怎么办?

1、首先是检查主从同步是否还在正常执行
2、检查延时问题,是否是延时导致的
3、检查最新的数据,看是最后的数据没同步到还是中间的数据没同步到
4、确认主从服务器的错误日志,看是否有相关的异常
5、如果数据不一致且无法通过简单的修复来解决,可能需要重新同步数据:
停止复制:在从服务器上执行STOP SLAVE;命令停止复制
数据备份与恢复:使用mysqldump或其他备份工具从主服务器备份数据,并在从服务器上恢复
重置复制:在从服务器上重置复制状态,重新配置复制并启动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1898777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

栈实现队列与队列实现堆

ok呀,上一篇博客写了队列的相关知识,接下来就是我们提及过的,栈与队列的相互实现了。堆与这个问题咧,其实大家完全可以当一个知识扩展因为,这个问题也是没有太多的实践意义的,更多的是教学意义。所以咧。大…

Linux--信号(万字详解!超完整!)

目录 0.预备知识 0.1.基本概念 0.2.信号的捕捉 0.3.理解信号的发送与保存 1.信号的产生(阶段一) 1.通过kill命令,向指定进程发送指定的信号 2.通过终端按键产生信号:ctrlc(信号2),ctrl\(…

2024暑假集训第二次考试

10062. Majority Opinion 思路分析 这道题就是一道思维题,这种题需要刻意练习,形成一定的思维模式用之前学过算法的原理去思考问题,而不是一味考验某一种算法的应用。 这道题就需要思考的是什么情况可以让这个奶牛爱吃同一种干草,…

ES6模块化学习

1. 回顾:node.js 中如何实现模块化 node.js 遵循了 CommonJS 的模块化规范。其中: 导入其它模块使用 require() 方法 模块对外共享成员使用 module.exports 对象 模块化的好处: 大家都遵守同样的模块化规范写代码&#xff…

免费的二级域名分发,您确定不要试试吗?

这是可爱的小盆友做的一个免费的二级域名&#xff0c;目前上线就送114514个积分&#xff0c;名额有限~ 首先进入>路明二级域名分发 - 免费稳定的二级域名分发服务 (kmyl.top)< 进来是这个样子&#xff08;如下图所示&#xff09; 话不多说&#xff0c;进入教程~ 第一章…

vue对axios进行请求响应封装

一、原因 像是在一些业务逻辑上&#xff0c;比如需要在请求之前展示loading效果&#xff0c;或者在登录的时候判断身份信息&#xff08;token&#xff09;等信息有没有过期&#xff0c;再者根据服务器响应回来的code码进行相应的提示信息。等等在请求之前&#xff0c;之后做的一…

跟着峰哥学java 微信小程序 第二天 封装ES7 + 后端工作

1.前端 1.1使用promise封装 使用promise封装以至于在图片路径 统一路径中修改 //封装统一请求域名 const baseUrl "http://localhost:8080"; //封装后需导出 export const getBaseUrl()>{return baseUrl; } 导入外来资源 初始化数据 设置数据 将处理后的数据…

高薪程序员必修课-JVM的内存区域以及对象创建过程

JVM内存区域 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;内存区域&#xff08;Memory Areas&#xff09;是对内存空间的逻辑划分&#xff0c;用于存储不同类型的数据和执行不同的操作。理解JVM的内存区域有助于优化程序性能、调优内存使用和排查内存相关的问题。下…

Java后端每日面试题(day1)

目录 JavaWeb三大组件依赖注入的方式Autowire和Resurce有什么区别&#xff1f;Spring Boot的优点Spring IoC是什么&#xff1f;说说Spring Aop的优点Component和Bean的区别自定义注解时使用的RetentionPolicy枚举类有哪些值&#xff1f;如何理解Spring的SPI机制&#xff1f;Spr…

溶酶体靶向嵌合体制备方法和技术

网盘 https://pan.baidu.com/s/1dhCCryatp71j7yXTDdrrTw?pwdynr4 具有聚集诱导发光性质的比率型溶酶体pH探针及应用.pdf 内体-溶酶体转运靶向嵌合体降解剂及其制备方法与应用.pdf 可降解PDGFR-β的蛋白降解靶向嵌合体及其制备方法和应用.pdf 溶酶体膜包覆纳米颗粒的制备方法.…

19C 单机文件系统安装文档

准备工作 1)查看系统版本、内核参数 more /etc/redhat-release more /etc/redflag-releaseuname -a2)查看当前系统是否配置了HugePages。在下面的查询中&#xff0c;HugePages的几个相关值都为0&#xff0c;表明当前未配值HugePages&#xff0c;其次可以看到该版本的大页大小为…

科普文:微服务之服务网格Service Mesh

一、ServiceMesh概念 背景 随着业务的发展&#xff0c;传统单体应用的问题越来越严重&#xff1a; 单体应用代码库庞大&#xff0c;不易于理解和修改持续部署困难&#xff0c;由于单体应用各组件间依赖性强&#xff0c;只要其中任何一个组件发生更改&#xff0c;将重新部署整…

2024年7月5日 (周五) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键&#xff0c;实现一键唤起、一键隐藏的 Windows 工具&#xff0c;并且支持窗口动态绑定快捷键&#xff08;无需设置自动实现&#xff09;。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《乐高地平线大冒险》为何不登陆…

能否免费使用Adobe XD?

Adobe XD不是免费的。Adobe 目前XD采用订阅模式&#xff0c;提供订阅模式 7 每天试用期结束后需要付费购买&#xff0c;具体价格根据不同的订阅计划确定&#xff0c;包括每月购买&#xff0c;包括 9.99 美元或每月 99.99 美元&#xff0c;或者选择购买Adobe CreativeCloud整体订…

文件打开的系统错误分析流程

当用户出现“Open file failed”错误时&#xff0c;手动产生dump文件。 &#xff08;1&#xff09;打开资源管理器&#xff0c;选择AppNameXXX.exe进程&#xff0c;右击鼠标选择“创建转储文件” (2) 生成转储文件 3.获取用户转储文件 4.用Visual studio2015打开dump文件分析…

Qt使用sqlite数据库及项目实战

一.sqlite使用介绍 在Qt中使用SQLite数据库非常简单&#xff0c;SQLite是一个轻量级的嵌入式数据库&#xff0c;不需要单独的数据库服务器&#xff0c;完全使用本地文件来存储数据。 当在Qt中使用SQLite数据库时&#xff0c;需要涉及到一些SQL语句以及Qt中的相关函数&#xf…

linux主机(A)通过私钥登录linux主机(B)

1.登录B主机&#xff0c;先在B主机执行 ssh-keygen 2.设置id_rsa的权限 chmod 600 id_rsa 3.将生成的id_rsa.pub导入到authorized_keys ssh-copy-id -i ./id_rsa.pub root127.0.0.1 4.将id_rsa复制到A主机 scp id_rsa_123 root1.1.1.A:/home/ 5.登录到A主机使用私钥登录 因…

华为云生态和快速入门

华为云生态 新技术催生新物种&#xff0c;新物种推动新生态 数字技术催生各类运营商去重塑并颠覆各行业的商业模式 从业务层面看&#xff0c;企业始终如一的目标是业务增长和持续盈利&#xff0c;围绕这些目标衍生出提质、增效、降本、安全、创新和合规的业务诉求&#xff0c…

【C语言题目】34.猜凶手

文章目录 作业标题作业内容2.解题思路3.具体代码 作业标题 猜凶手 作业内容 日本某地发生了一件谋杀案&#xff0c;警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说&#xff1a;不是我。 B说&#xff1a;是C。 C说&#xff1a;是D。 D说&#xff…

科研绘图系列:R语言STAMP图(STAMP Plot)

介绍 STAMP图(STAMP plot)并非一个广泛认知的、具有特定名称的图表类型,而是可能指在STAMP(Statistical Analysis of Metagenomic Profiles:“STAMP: statistical analysis of taxonomic and functional profiles”)软件使用过程中生成的各种统计和可视化图表的总称。ST…