暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL从库生成大量小的relay log案例模拟

数据库干货铺 2019-10-22
680
最近看到"八怪"写的《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.  搬点原理过来
          如果满足下面三个条件,将会出现案例中的故障:
            1)主从中的MASTER_HEARTBEAT_PERIOD的值大于从库slave_net_timeout
            2)主库当前压力很小持续slave_net_timeout设置时间没有产生新的Event
            3) 之前主从有一定的延迟

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

            如果文章对你有用,请小伙伴们点个"在看",或转发,谢谢。


            精彩推荐:

            1. MySQL不停地自动重启怎么办

            2. 升级python,就是这么简单

            3. MySQL里trx_mysql_thread_id为0 的事务导致大量锁等待超时该咋整

            4. mysql8.0新增用户及加密规则修改的那些事

            5.Postgresql部署及简单操作

            6.比hive快10倍的大数据查询利器-- presto

            7. 国产数据库部署初体验

            8. 监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库

            9.   PostgreSQL主从复制--物理复制

            10. PostgreSQL主从复制--逻辑复制


            文章转载自数据库干货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论