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

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

1.  案例模拟

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

1.1  修改参数

从库上查看

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

从库上修改

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

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

1.2  主从同步调整

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

1.3  查看relay log

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

  1. -rw-r----- 1 mysql mysql 200 Oct 22 15:59 relay_34.000001
  2. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000002
  3. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000003
  4. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000004
  5. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000005
  6. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000006
  7. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000007
  8. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000008
  9. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000009
  10. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000010
  11. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000011
  12. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000012
  13. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000013
  14. -rw-r----- 1 mysql mysql 366 Oct 22 15:59 relay_34.000014
  15. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000015
  16. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000016
  17. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000017
  18. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000018
  19. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000019
  20. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000020
  21. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000021
  22. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000022
  23. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000023
  24. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000024
  25. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000025
  26. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000026
  27. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000027
  28. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000028
  29. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000029
  30. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000030
  31. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000031
  32. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000032
  33. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000033
  34. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000034
  35. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000035
  36. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000036
  37. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000037
  38. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000038
  39. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000039
  40. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000040
  41. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000041
  42. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000042
  43. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000043
  44. -rw-r----- 1 mysql mysql 366 Oct 22 16:00 relay_34.000044
  45. -rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000045
  46. -rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000046
  47. -rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000047
  48. -rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000048
  49. -rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000049
  50. -rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000050
  51. -rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000051
  52. -rw-r----- 1 mysql mysql 366 Oct 22 16:01 relay_34.000052
  53. -rw-r----- 1 mysql mysql 320 Oct 22 16:01 relay_34.000053
  54. -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. Collection,泛型,Map

    1.Collection集合 集合和数组的区别? 数组的长度是固定的, 集合的长度是可变的 数组中存储的数据都是同一类型的数据.集合存储的是对象,而且对象的类型可以不一致 集合框架 单列集合 java ...

  2. centos7上部署dubbo管理控制台dubbo-admin

    centos7上部署dubbo管理控制台dubbo-admin 1 准备工作 服务器:系统centos7, 内存4G, 存储60G, ip 192.168.159.128 软件环境: 安装有jdk1. ...

  3. 松软科技课堂:SQLUNION和UNIONALL操作符

    SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...

  4. 注解@Async解决异步调用问题

    序言:Spring中@Async 根据Spring的文档说明,默认采用的是单线程的模式的.所以在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的. 那么当多个任务的执行势必会相互影响. ...

  5. 自定义JDBC工具类

    因为数据库的连接代码都是固定的,为了将减少重复的代码的书写,可以将这些代码封装为一个工具类,获取数据库的连接对象. import java.sql.Connection; import java.sq ...

  6. C# 栈的应用

    栈的特性:后进先出(LIFO) 回文判断 类似123321,123a321即为回文 思路: 将字符串前一半入栈 依次弹出栈与字符串后一半比较 public static bool IsPlalindr ...

  7. MySQL设计表规范

    规范总结 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字[设计表后逐一排查] 所有表必须使用 Innodb 存储引擎,数据库和表的字符集统一使用 ...

  8. [VB.NET Tips]字符串分隔

    在实际应用中,很多场景下都需要分隔字符串,如解析CSV文件等. 一般我们使用split方法来按照指定的分隔符来进行分隔字符串获得一个数组. Split方法的签名是: Split(ParamArray ...

  9. Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fa980000, 59244544, 0) failed; error='Cannot allocate memory' (errno=12)

    启动项目报错 Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fa980000, 592445 ...

  10. 09.Django基础七之Ajax

    一 Ajax简介 1.简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步的Javascript和XML".即使用Javascrip ...