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
  • 之前主从有一定的延迟

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

 

你可能感兴趣的:(MySQL从库生成大量小的relay log案例模拟)