最近看到"八怪"写的《MySQL:产生大量小relay log的故障一例》,因之前也遇到类似的情况,一直没搞懂原理及复现,看完此文章后,本着实践是检验真理的唯一标准的原则,决定自己也手动模拟一番,加深印象。

其中的模拟步骤与原文中不一致,感兴趣的小伙伴也可以自己动手模拟。

1.  案例模拟

原理啥的原文已介绍,此处不再赘述,只是直接进行案例模拟。

1.1  修改参数

从库上查看

mysql> select Heartbeat from mysql.slave_master_info;
+-----------+
| Heartbeat |
+-----------+
| 5 |
+-----------+
1 row in set (0.00 sec)

从库上修改

/**   先查看slave_net_timeout参数 */
mysql> show variables like '%slave_net_timeout%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| slave_net_timeout | 10 |
+-------------------+-------+
1 row in set (0.00 sec) /** 修改参数slave_net_timeout * /
mysql> set global slave_net_timeout =2;
Query OK, 0 rows affected (0.00 sec)

因设置的值比较小,所以效果很明显。

1.2  主从同步调整

/**  先停止同步 */
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec) /** 调整为延迟60s ,此步骤可以不设置也可以复现,亲测 */
mysql> change master to master_delay=60;
Query OK, 0 rows affected (0.01 sec) /** 开启同步 */
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

1.3  查看relay log

会发现每秒生产1个很小的relay log

-rw-r----- 1 mysql mysql  200 Oct 22 15:59 relay_34.000001
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000002
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000003
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000004
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000005
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000006
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000007
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000008
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000009
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000010
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000011
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000012
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000013
-rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000014
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000015
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000016
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000017
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000018
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000019
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000020
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000021
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000022
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000023
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000024
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000025
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000026
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000027
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000028
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000029
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000030
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000031
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000032
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000033
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000034
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000035
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000036
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000037
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000038
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000039
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000040
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000041
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000042
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000043
-rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000044
-rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000045
-rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000046
-rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000047
-rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000048
-rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000049
-rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000050
-rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000051
-rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000052
-rw-r----- 1 mysql mysql 320 Oct 22 16:01 relay_34.000053
-rw-r----- 1 mysql mysql 2.3K Oct 22 16:01 relay_34.index

至此也就模拟出相应的现象。

2.  搬点原理过来

如果满足下面三个条件,将会出现案例中的故障:

  • 主从中的MASTER_HEARTBEAT_PERIOD的值大于从库slave_net_timeout
  • 主库当前压力很小持续slave_net_timeout设置时间没有产生新的Event
  • 之前主从有一定的延迟

只有按照这个标准去模拟就可以复现了。

MySQL从库生成大量小的relay log案例模拟的更多相关文章

  1. MySQL 主从延迟几万秒 Queueing master event to the relay log(转)

    数据库版本Server version:    5.6.24-log Source distribution 问题描述 数据采集平台业务数据库由于批量灌数据导致主从延迟上万秒. 复制线程长期处于Que ...

  2. QT的MYSQL驱动库编译

    QT的MYSQL驱动库编译 需要准备QT的源码Src,此次编译64位 在QTCreator中打开mysql.pro 修改两个pro 文件,下图为改好 1.mysql.pro TARGET = qsql ...

  3. mysql relay log参数汇总

    前言:MySQL进行主主复制或主从复制的时候会在配置文件制定的目录下面产生相应的relay log,本文档总结这些相关参数的定义及解释. 1.什么是relay log The relay log, l ...

  4. 【转】mysql 拖库写库用法

    mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...

  5. Linux下动态库生成和使用

    Linux下动态库生成和使用 一.动态库的基本概念 1.动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序.动态链接库是目标文件的集合,目标文件在动态链接库中 ...

  6. MySQL平滑删除数据的小技巧【转】

    今天接到一位开发同学的数据操作需求,需求看似很简单,需要执行下面的SQL语句: delete from test_track_log where log_time < '2019-1-7 00: ...

  7. mysql 主从库同步

    #主库修改my.ini [mysqld] server log-bin=mysql-bin binlog-do-db=demo #从库修改my.ini [mysqld] server replicat ...

  8. mysql从库Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'报错处理

    年后回来查看mysql运行状况与备份情况,登录mysql从库查看主从同步状态 mysql> show slave status\G; *************************** . ...

  9. MySQL 从库down机

    MySQL 从库down机中午突然down机,重启后,从库同步报主键重复的错误. Could not execute Write_rows event on table operation_maste ...

随机推荐

  1. Winform中跨窗体设置Zedgraph的属性并刷新曲线图

    场景 在使用ZedGraph时,经常有图形选项功能,设置曲线图相关属性后, 点击保存会设置另一个窗体的属性并刷新图. 效果 实现 在设置图形的选项的类中,声明委托和事件 //委托的定义 public ...

  2. 大数据平台搭建 - cdh5.11.1 - hive客户端安装

    一.简介 hive是基于hadoop的一种数据仓库工具,可以将结构化的文件映射成为数据库的一张表,并提供简单sql查询功能,底层实现是转化为MapReduce任务计算. 二.安装 (1)下载 从cdh ...

  3. 使用python合并excel

    当工作碰到需要将几个excel合并时,比如一个表,收集每个人的个人信息,陆续收回来就是十几张甚至几十张表,少了还好解决,但是很多的话就不能一个一个去复制了,这时候就想到了python,Python大法 ...

  4. Bytectf-几道web总结

    1.EZcms 这道题思路挺明确,给了源码,考点就是md5哈希扩展+phar反序列化 首先这道题会在上传的文件目录下生成无效的.htaccess,从而导致无法执行上传的webshell,所以就需要想办 ...

  5. 公众号第三方授权 以及微信H5支付(前端)

    由于公司业务需要,想用户通过我们公众号平台支付的金额直接进去用户自己的账户,所以涉及到公众号第三方授权: 由于涉及第三方,故需要在微信开放平台创建第三方平台: 创建第三方平台:(申请页面链接:http ...

  6. 【linux】【PostgreSQL】PostgreSQL安装

    前言 PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统.POSTGR ...

  7. Hadoop点滴-Hadoop的IO

    Hadoop自带一套原子操作用于数据的I/O操作. 如果系统中需要处理的数据量达到Hadoop的处理极限时,数据被损害的概率还是很高的 检测数据是否被损害的常见措施是,在数据第一次被引进系统时,计算校 ...

  8. redis-分片(转)

    转:https://www.cnblogs.com/houziwty/p/5167075.html 分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每个实例将只包 ...

  9. ReactNative实现GridView

    ReactNative内置了ListView组件但是没有类似GridView这样的组件.利用一些已经有的属性是可以实现GridView的,利用ContentContainerStyle的属性然后配合样 ...

  10. rt.jar包添加源文件只需要关联到已安装对应jdk目录下source.zip源码文件即可

    项目中配置的JRE System Libriry下的rt.jar包,需要关联源文件时候,只需要点击“Attach Source...“按钮,选择"External File..." ...