zoukankan      html  css  js  c++  java
  • MySQL从库生成大量小的relay log案例模拟

    最近看到"八怪"写的《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
    • 之前主从有一定的延迟

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

  • 相关阅读:
    GDI+绘制字体显示不全
    vector赋值
    创建不响应(不激活)窗口
    MouseHover
    duilib窗口从任务栏恢复问题
    java 加解密
    maven依赖仲裁
    $.ajax()
    mybatis 动态SQL
    Json学习
  • 原文地址:https://www.cnblogs.com/gjc592/p/11720416.html
Copyright © 2011-2022 走看看