MySql主从同步延迟怎么办?

文章目录

    • 什么是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或其他备份工具从主服务器备份数据,并在从服务器上恢复
重置复制:在从服务器上重置复制状态,重新配置复制并启动

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2021-06-15 protues(ISIS)脉冲发生器仿真仪表使用

缘由这个脉冲发生器怎么连线_编程语言-CSDN问答

​埃文科技受邀出席2024 “数据要素×”生态大会​

2024“数据要素”生态大会(以下简称“大会”)于2024年6月30日在河南省郑州市举办,大会主题为“加快数据要素化进程 推动新质生产力发展”。 本次大会旨在搭建高水平交流合作平台、分享前沿观点、展示先进技术、交流实践经验,共同探…

开放式蓝牙耳机推荐,开放式耳机选购小技巧大公开!

跑步是我们生活中最常见的运动方式。在跑步中佩戴耳机往往能达到“事半功倍”的效果,如何去选择一款好的运动耳机便需要精挑细选了。作为一个开放式耳机资深玩家兼马拉松参与者,我个人觉得开放式耳机是最适合跑步的了,其开放式的设计更加适合…

数据结构之算法的时间复杂度

1.时间复杂度的定义 在计算机科学中,算法的时间复杂度是一个函数,它定量描述了算法的运行时间。一个算法所花费的时间与其中语句的执行次数成正比列,算法中的基本操作的执行次数,为算法的时间复杂度 例1: 计算Func1…

鸿蒙‘ohpm‘ 不是内部或外部命令,也不是可运行的程序-解决方案

🔥 博客主页: 小韩本韩! ❤️ 感谢大家点赞👍收藏⭐评论✍️ 在鸿蒙的DevEco Studio的终端下输入 onpm -v 或者 你需要下载第三方ohpm包的时候提示‘ohpm‘ 不是内部或外部命令,也不是可运行的程序- 主要是因为我们…

【基于R语言群体遗传学】-6-表型计算等位基因频率、最大似然估计方法

到目前为止,我们主要讨论了等位基因和基因型频率,以及我们如何可以从一个推断出另一个。但是,如果我们不知道等位基因频率,只知道种群中存在哪些表型呢?如果我们足够幸运,知道哪些表型对应哪些基因型&#…

网络-calico问题分析

项目场景: calico-node日志提示 Failed to auto-detect host MTU - no interfaces matched the MTU interface pattern. To use auto-MTU, set mtuifacePattern to match your hosts’s interfaes. 同时,cali开头网卡的mtu是1440大小 原因分析&#xff…

扁鹊三兄弟的启示,探寻系统稳定的秘诀

一、稳定性的重要性 1. 公司收益的角度 从公司收益的视角审视,系统不稳定可能会引发直接损失。例如,当系统突然出现故障导致交易中断时,可能造成交易款项的紊乱、资金的滞留或损失,这不但会阻碍当前交易的顺利完成,还…

web安全的会议室管理系统-计算机毕业设计源码50331

目 录 摘要 1 绪论 1.1 开发背景与意义 1.2国内外研究现状 1.3 相关技术、工具简介 1.3.1 MySQL数据库的介绍 1.3.2 B/S架构的介绍 1.3.3 Java语言 1.3.4 SpringBoot框架 1.4论文结构与章节安排 2 会议室管理系统需求分析 2.1 可行性分析 2.1.1 技术可行性分析 2…

【Redis】真行,原来是这样啊! --Redis自动序列化和手动序列化的区别(存储结构、内存开销,实际写法)

对于Redis有两种序列化和反序列化的方式, 方式一: 一种是通过 注入RedisTemplate 对象,找个对象,通过配置类进行一定的配置,使得使用RedisTemplate 对象时,便会使用配置的那些键、值的序列化方式&#xff…

深度学习Week19——学习残差网络和ResNet50V2算法

文章目录 深度学习Week18——学习残差网络和ResNet50V2算法 一、前言 二、我的环境 三、论文解读 3.1 预激活设计 3.2 残差单元结构 四、模型复现 4.1 Residual Block 4.2 堆叠Residual Block 4.3. ResNet50V2架构复现 一、前言 🍨 本文为🔗365天深度学…

昇腾910B部署Qwen2-7B-Instruct进行流式输出【pytorch框架】NPU推理

目录 前情提要torch_npu框架mindsport框架mindnlp框架 下载模型国外国内 环境设置代码适配(非流式)MainBranch结果展示 代码适配(流式) 前情提要 torch_npu框架 官方未适配 mindsport框架 官方未适配 mindnlp框架 官方适配…

add_metrology_object_generic 添加测量模型对象。找两条直线,并计算两条线的夹角和两个线的总长度,转换成毫米单位

*添加测量模型对象 *将测量对象添加到测量模型中 *算子参数: *    MeasureHandle:输入测量模型的句柄; *    Shape:输入要测量对象的类型;默认值:‘circle’,参考值:‘circl…

淘宝扭蛋机小程序:打造新的扭蛋体验

扭蛋机行业近年来发展非常迅速,呈现出了明显的增长势头,深受年轻消费者的青睐。当下在消费市场中,年轻人占据了很大的份额,这也推动了扭蛋机市场的发展。如今,扭蛋机也正在向多个方向发展,不再局限于线下扭…

如何利用代理IP打造热门文章

作为内容创作者,我们都知道,有时候地理限制和访问障碍可能会成为我们获取新鲜素材和优质信息的障碍。使用代理IP,正是突破这些限制的好方法! 1. 无缝获取全球视野 如果你还在苦恼看不到其他地区的热点文章,你可以尝试…

保障信息资产:ISO 27001信息安全管理体系的重要性

在当今数字化和全球化的时代,信息安全已经成为企业成功和持续发展的关键因素之一。随着信息技术的快速发展和互联网的普及,企业面临着越来越多的信息安全威胁和挑战,如数据泄露、网络攻击、恶意软件等。为了有效应对这些威胁,企业…

docker集群部署主从mysql

搭建一个mysql集群,1主2从,使用docker容器 一、创建docker的mysql镜像 下次补上,因为现在很多网络不能直接pull,操作下次补上。 二、创建mysql容器 创建容器1 docker run -it -d --name mysql_1 -p 7001:3306 --net mynet --…

Astro新前端框架首次体验

Astro新前端框架首次体验 1、什么是Astro Astro是一个静态网站生成器的前端框架,它提供了一种新的开发方式和更好的性能体验,帮助开发者更快速地构建现代化的网站和应用程序。 简单来说就是:Astro这个是一个网站生成器,可以直接…

生成式人工智能如何改变软件开发:助手还是取代者?

生成式人工智能如何改变软件开发:助手还是取代者? 生成式人工智能(AIGC)正在引领软件开发领域的技术变革。从代码生成、错误检测到自动化测试,AI工具在提高开发效率的同时,也引发了对开发者职业前景的讨论…

标贝语音识别在智能会议系统的应用案例

语音识别是指将语音信号转换成文本或者其他数字信号形式的过程,随着人工智能在人们日常工作生活中的普及,语音识别技术也被广泛的应用在智能家居、智能会议、智能客服、智能驾驶等领域,以语音识别技术在智能会议系统中的应用为例,…