【MySQL】常见slave 延迟原因以及解决方法

一  序言

在运维线上M-M 架构的MySQL数据库时,接收的比较多关于主备延时的报警:

check_ins_slave_lag (err_cnt:1)critical-slavelag on ins:3306=39438

相信slave 延迟是MySQL dba 遇到的一个老生长谈的问题了。先来分析一下slave延迟带来的风险
  1. 异常情况下,主从HA无法切换。HA 软件需要检查数据的一致性,延迟时,主备不一致。 
  2. 备库复制hang会导致备份失败(flush tables with read lock会900s超时)
  3. 以 slave 为基准进行的备份,数据不是最新的,而是延迟。

二  如何解决
面对此类问题我们如何解决 ,如何规避?分析一下导致备库延迟的几种原因
1. ROW模式无主键、无索引或索引区分度不高.有如下特征
   a. show slave status 显示position一直没有变
   b. show open tables 显示某个表一直是 in_use 为 1
   c. show create table 查看表结构可以看到无主键,或者无任何索引,或者索引区分度很差。

解决方法:
   a. 找到表区分度比较高的几个字段, 可以使用这个方法判断:
    select count(*) from xx; 
    select count(*) from (select distinct xx from xxx) t;
    如果2个查询count(*)的结果差不多,说明可以对这些字段加索引
   b. 备库stop slave;
    可能会执行比较久,因为需要回滚事务。
  c. 备库
    set sql_log_bin=0;
    alter table xx add key xx(xx);
   老的版本slave应用binlog时只会选择第一个索引,需要把新加的索引放在最前面,可以先把老的索引删掉,建新的索引,再把老的索引建上。可以放到一个sql中执行。
  d. 备库start slave
    如果是innodb,可以通过show innodb status来查看 rows_inserted,updated,deleted,selected这几个指标来判断。
    如果每秒修改的记录数比较多,说明复制正在以比较快的速度执行。

2 MIXED模式无索引或SQL慢
   在从库上show full processlist 查看到正在执行的SQL。
解决方法:
  a.  SQL比较简单, 则检查是否缺少索引,并添加索引。
  b. 另一类是 insert into select from的语句,如果select 里包含group by,多表关联,可能效率会比较低。
      这类可以到主库把binlog_format改成row。

3 主库上有大事务,导致从库延时
现象解析binlog 发现类似于下图的情况看

解决方法:
与开发沟通,增加缓存,异步写入数据库,减少直接对db的大量写入。

4. 主库写入频繁,从库压力跟不上导致延时
  此类原因的主要现象是数据库的 IUD 操作非常多,slave由于sql_thread单线程的原因追不上主库。
 解决方法:
 a 升级从库的硬件配置,比如ssd,fio.
 b 使用@丁奇的预热工具-relay fetch
   在备库sql线程执行更新之前,预先将相应的数据加载到内存中,并不能提高sql_thread线程执行sql的能力,也不能加快io_thread线程读取日志的速度。
 c 使用多线程复制 阿里MySQL团队实现的方案--基于行的并行复制。
   该方案允许对同一张表进行修改的两个事务并行执行,只要这两个事务修改了表中的不同的行。这个方案可以达到事务间更高的并发度,但是局限是必须使用Row格式的binlog。因为只有使用      Row格式的binlog才可以知道一个事务所修改的行的范围,而使用Statement格式的binlog只能知道修改的表对象。

5. 数据库中存在大量myisam表,在备份的时候导致slave 延迟

 
 由于xtrabackup 工具备份到最后会执行flash tables with read lock ,对数据库进行锁表以便进行一致性备份,然后对于myisam表 锁,会阻碍salve_sql_thread 停滞运行进而导致hang
该问题目前的比较好的解决方式是修改表结构为innodb存储引擎的表。
 
 三 拓展阅读
 [1] 怎样解决MySQL数据库主从复制延迟的问题 
 [2] 三种MySQL并行复制方案的分析                
 [3] 一种MySQL主从同步加速方案-改进
 [4] MySQL多线程同步MySQL-Transfer介绍

时间: 2024-09-20 10:05:38

【MySQL】常见slave 延迟原因以及解决方法的相关文章

网易UU加速器常见错误码原因及解决方法

以下是大家在使用UU时比较常见的错误码和解决方法,为了能够更快地解决问题,大家遇到错误码时请先检查一下本地的系统配置,比如系统时间是否准确.网络的连接.防火墙配置.安全软件的部署.后台是否有占用带宽的程序等等,如果碰到其他错误码请及时与我们联系哦. 错误码400 问题原因:亲,验证码输错啦 解决方法:完整且正确地输入您收到的验证码,你懂的! 错误码402 问题原因:身份验证到期 解决方法:重新操作一次身份验证 错误码406 问题原因:超过半个小时未输入验证码,导致验证码过期 解决方法:重新操作一

Excel2007公式常见显示错误原因与解决方法

Excel2007的公式如果写错,就会在单元格中显示各种各样的错误信息.看到这些奇怪的错误代码,有的朋友可能会手忙脚乱,甚至感到烦躁. 其实,任何错误均有它内在的原因,下面我们就和大家探讨根据公式返回错误值的代码识别错误的类型和原因,以及相应的处理方法,帮助朋友们轻松地应对各种常见错误. 错误显示1:#####! 原因:单元格所包含的数字.日期或时间占位比单元格宽. 解决方案:拖动鼠标指针更改列宽. 错误显示2:#NUM! 原因:顾名思义,公式中的数字出现问题--类型错误,或者数字超出Excel

网站快照回档的常见原因和解决方法分析

众所周知,网站快照是判断网站权重的方式之一,也是分析我们网站被百度重视程度的一个关键因素之一,但是笔者发现很多朋友包括笔者的网站经常会出现快照回档的问题,快照回档说明了那些问题?我们又应该从那些方面提高网站权重保证我们网站快照的天天更新呢?下面笔者就自己在网站运营优化过程中关于快照回档的几点原因和解决方法技巧和大家一起分享一下.好了,闲话短续咱们进入今天的主题.我将快照回档的原因大致总结了一下几点,然后一一进行分析. 第一,服务器因素.这个是快照回档的一个非技术性因素,但是对于网站快照的影响又是

Win7系统死机常见的两种原因及解决方法

  Win7系统死机常见的两种原因及解决方法           一.开机自检时死机与解决方案 当用户在开启系统时,开机自检时发生死机的话,当主板能通电自检时死机. 解决方案:可尝试重启系统,如果重启后依旧死机,那就很有可能是内存.主板等硬件的问题了. 此时需要对板卡.内存条.cpu等进行拔插,看看是否接触不良的问题.如果还是不行的话,只能使用"替换法"一件一件地进行排除,直到找出问题为止. 二.系统定时死机与解决方案 系统运行一段时间后,有规律地死机的话.很可能是由于电源管理的问题,

电脑开机没反应的常见原因和解决方法

电脑开机没反应的常见原因和解决方法 故障现象一:打开电源,按下开机按钮后,电脑无任何动静. 分析:此时电源应向主板和各硬件供电,无任何动静说明是供电部分出了问题.(包括主板电源部分) 检查思路和方法: 1.市电电源问题,请检查电源插座是否正常,电源线是否正常. 2.机箱电源问题,请检查是否有5伏待机电压,主板与电源之间的连线是否松动,如果不会测量电压可以找个电源调换一下试试. 3.主板问题,如果上述两个都没有问题,那么主板故障的可能性就比较大了.首先检查主板和开机按钮的连线有无松动,开关是否正常

DVR常见故障原因及解决方法

本文小编重点为大家介绍的是关于DVR常见故障发生的原因及解决方法,DVR设备因为牵扯计算机相关知识及应用,使用过程中也会频繁出现"莫名其妙"的故障,而且往往都不好解决,无从下手.下面根据不同的故障现象分类叙述. DVR常见故障原因及解决方法 A.故障现象描述:数字硬盘录像机不能启动. 原因分析:主机电源开关失灵;主机电源损坏;主机主板或CPU卡坏;主系统硬盘引导区损坏,或者硬盘本身故障;操作系统被破坏等. 解决方法:对以上原因要仔细分析.逐一排除. B.故障现象描述:数字硬盘录像机死机

RDS for MySQL 空间问题的原因和解决

RDS for MySQL 空间问题的原因和解决   1. 原因 2. 解决 2.1 Binlog 文件 2.2 数据文件 2.3 临时文件 2.4 系统文件 RDS for MySQL 实例日常使用中随着实例的使用,会出现空间使用告警甚至超过实例限额被锁定的情况. 比如:   1. 原因 Binlog 日志文件占用高 数据文件占用高 临时文件占用高 系统文件占用高 实例空间使用情况可以在 RDS 控制台监控报警中查看: 2. 解决 RDS 实例支持单独升级磁盘空间,升级磁盘空间是解决空间问题的

php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法_php技巧

本文实例讲述了php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法.分享给大家供大家参考,具体如下: 微信支付api.mch.weixin.qq.com域名解析慢了,导致付款时非常的慢,那么要如何来解决微信支付慢的问题呢,这里就来一起分析一下. 有朋友在阿里云主机实现微信支付逻辑时,发现api.mch.weixin.qq.com的解析实在是太慢了. 因此出现了手动修改/etc/hosts的情况,当然了,哪天微信支付要是换个机房肯定要挂. 我们的机房也有相似的同题,专

网速慢的原因及解决方法

现在用电脑的人越来越多,网速成了一个比较让人在意的话题,尤其是看电视一卡一卡的时候,让人想要砸电脑,在这里给大家分享一下网速慢的解决方法. 出现电脑网速慢的一般原因主要有:一个是宽带,另外一个是电脑问题,总结如下: 1.本机运行的程序占用了网络带宽使网速变慢,如:在线听歌(酷狗).视频电影(QVOD).下载(使用迅雷.BT)等.关闭退出程序即可恢复正常. 2.上网高峰时间,服务器响应过多,无法正常快速连接.如晚上速度相对早上要慢.建议错开高峰时间上网. 3.升级宽带,如 1M 升到 2M,ADS