浅谈mysql主从复制延迟

1 概念解读

需要知道以下几点

1 mysql的主从同步上是异步复制,从库是串行化执行

2 mysql 5.7的并行复制能加速从库重做的速度,进一步缓解 主从同步的延迟问题

3 mysql的Seconds_Behind_Master代表延迟的状态 0为无延迟

4 mysql的Slave_SQL_Running_State:状态在异常时会有所表现,延迟出现的时候要尤为注意

5  Master_Log_File = Relay_Master_Log_File,Read_Master_Log_Pos = Exec_Master_Log_Pos 同样可认为 主从 0 延迟

2 场景分析

1 sql和io 线程正常 延迟一会就恢复,这样大多是由于短暂的事务引起的,

1  短暂小事务 不用关心

2 定期出现,需要具体分析

2 sql和io线程正常 磁盘 IO 过高 iowait很高,达到10%以上Exec_Master_Log_Pos 一直在变 证明 从库一直在追赶主库 分为几种情况

1 从库的机器硬件性能很差

2 主库执行的DML没有应用索引或者应用不当导致耗时很久,在从库回放时候很慢

3 HP机器RAID卡充放电不正常 会导致这种问题

4 主库业务过于集中,例如一台机器多个DB,导致DML非常频繁

5 从库采用ext4文件系统,jdb2占用IO太高

3 sql和io线程正常 Slave_SQL_Running_State:Reading event from relay log,Exec_Master_Log_Pos 一直不变 分为几种情况

1 操作的表是myisam表或者没有索引

2 执行了大事务(包含DDL) 可能导致这种情况,经常见于删除大量数据场景

4 Slave_SQL_Running_State:waiting for table flush ,延迟 一直增加

1 在从库,当xtarbackup备份的时候,会flush table with read lock,这时候如果从库有慢查询在进行,会导致一直等待,waiting for table flush,延迟不断增加

5  一台从库无延迟,另一台从库出现延迟

1 在同等硬件配置情况下,主要出现在一台数据库需要写中继日志,以提供canal解析binlog服务。

6  外键检测延迟问题

1 这种情况比较少见,是我在网上搜到的案例

7  并行复制导致延迟

1 常见于大表的DDL操作

3 解决方法

前提 进行 binlog分析

1 读取Exec_Master_Log_Pos mysqlbinlog进行卡主点的解析 mysqlbinlog -vvv --base64-output=decode-rows -j 位置 mysql-bin文件 | more 确定 操作的table和DML语句 还可以根据生成的sql文本大小估算下数据量

2  针对问题2的解决方案

1 更换硬件

2 优化主库的慢日志语句,确保从库能更快的运行

3 更换RAID卡电池

3  针对问题3 的解决方案

1 将myisam表转换为innodb表

2 添加主键

3 将大事务进行拆分,尤其是大量的delele操作,很容易导致这种问题

4 将业务进行优化

1 研发进行业务优化

2 业务库进行拆分

4 针对问题4的解决方案

1  优化在从库的查询 并且调整备份数据库时间

5 针对问题5的解决方案

1 升级硬件 2 减少主库事务

6 针对问题6 7的解决方案

1 去掉外键检测 2 对于DDL没太好办法

7 通用解决方案

1  如果在数据量不是很大的情况下,重做从库是最快的方式

2 可以尝试下 提交方式设为 2 禁止写binlog等方式尝试加速复制(感觉效果并不是太好)经朋友补充  添加  innodb_flush_log_at_trx_commit=2 sync_binlog=500  效果不错,可以提升速度

3 mysql 5.7的并行复制可以加速复制,非常建议使用

这是作者关于主从延迟的一些见解 欢迎点评

mysql案例~mysql主从复制延迟概总的更多相关文章

  1. mysql 案例 ~ mysql字符集详解

    一 谈谈mysql常见的字符集问题 二 字符集统一  1 character_set_server  2 character_set_client  3 java/php等连接字符集  4 chara ...

  2. mysql 案例~mysql主从复制延迟处理(2)

    一 简介:今天来聊聊周期性从库延迟的问题,是上一篇的基础分析的一个场景 二 背景:近期每天的指定时间段,收到从库延迟的报警,然后过一段时间恢复.由于从库是提供读服务的,所以需要解决 三 分析思路: 1 ...

  3. mysql 案例 ~ mysql主从复制错误问题

    简介 mysql主从不同步的几种情况 一  具体情况   1 主库有memory引擎的内存表      分析 由于memory表的数据存放在内存中,一旦主库数据丢失,从库可能就会发生数据复制异常    ...

  4. mysql 案例 ~ mysql常见日志错误

    一 简介: mysql note级别日志汇总二错误系列  1 Aborted connection    1 [Note] Aborted connection 61 to db: 'unconnec ...

  5. mysql 案例~ mysql故障恢复

    一 :遇到一个朋友的案例 分享下处理流程 二 : 现象 1 mysql无法启动,观察日志发现 InnoDB: Failing assertion: !m_fatal InnoDB: We intent ...

  6. mysql 案例~mysql元数据的sql统计

    一 简介:今天我们来收集下提取元数据的sql 二 前沿: information_schema  引擎 memory 元数据收集表 三 sql语句: 1#没有使用索引的表统计 SELECT t.TAB ...

  7. mysql的主从复制延迟问题--看这一篇就够了

    ​ 在之前我们已经讲解了一主一从,双主双从的mysql集群搭建,在单机应用的时候看起来没有问题,但是在企业的生产环境中,在很多情况下都会有复制延迟的问题. ​ 主从复制的原理我们在此处就不再赘述了,之 ...

  8. MySQL主从复制延迟的问题 #M1002#

    MySQL主从复制延迟的问题 #M1002# https://mp.weixin.qq.com/s/NwFGER-qn2xQ5TnG-php1Q 更为糟糕的是,MySQL主从复制在大事务下的延迟.同样 ...

  9. MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!

    MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!2017年06月15日 19:59:44 蓝色-鸢尾 阅读数:2062版权声明:本文为博主原创文章,如需转 ...

随机推荐

  1. 【译】8. Java反射——注解

    原文地址:http://tutorials.jenkov.com/java-reflection/annotations.html ================================== ...

  2. DAY1初识Python----变量及命名规则,注释,数据类型,常量,交互

     1.认识和了解python  python是一门解释型语言,弱类型语言 2.python发展史   2008年 2.X,3.X 3.第一个python程序  python语句可以写在命令行中,进行编 ...

  3. 洛谷 P1879 玉米田(状压DP入门题)

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 相关变量解释: int M,N; int plant[maxn][maxn];/ ...

  4. 原生JS正则实现trim()

    Jquery中封装有trim() 原生需要自己实现,我们可以用原型的方式自己封装trim()方法,实现去掉前后空格.前空格.后空格...所以不必抱怨,简单又灵活,这才是强大的JS的特色 String. ...

  5. java List集合

    List集合包括四种类,分别是ArrayList.LinkedList.Vector.Stack. ArrayList:元素的存储是顺序存储,可以根据数组的下标查询,查询速度快,但是在删除和插入元素时 ...

  6. position:fixed固定定位的用法

    一.position:fixed:固定定位 1.实现某个元素在可视窗口的居中位置显示 1)给自身设置宽高: 2)给自身加position:fixed: 3)用margin向左移动自身宽度的一半,向上移 ...

  7. 解决jQuery ajax动态新增节点无法触发点击事件的问题

    在写ajax加载数据的时候发现,后面添加进来的demo节点元素,失去了之前的点击事件.为什么点击事件失效,我们该怎么去解决呢? 其实最简单的方法就是直接在标签中写onclick="" ...

  8. Altium Designer 18 ------ 常用功能记录

    PCB选中某条线路,按一下 Tab 键选中整条线路 PCB中,按 “N” 键选择隐藏或显示某个网络 配置Altium Designer 18 教程所需的捕捉网格的值: G显示Snap Grid菜单,您 ...

  9. qml:: QVariant转为自定义类型

    QVariant可以实现C++与qml之间的自定义类型的传递: 以QObject类型为例: 1.  QObject转为QVariant QVariant var = QVariant::fromVal ...

  10. 上这个资源网站,让你轻松无忧找mac软件资源

    之前分享过好几篇关于mac软件相关的文章(想要看其他的mac软件专题文章,可以关注我,点击进入查看发表的文章),有网友表示,优质的软件推荐清单有了,想要下载和获取mac软件,买一个正版软件在APP s ...