异常高的MySQL写入和比正常的二进制日志文件更大。我怎样才能确定是什么原因造成的?

时间:2014-02-06 00:10:29

标签: mysql innodb replication mysqlbinlog

我们有一个MySQL主数据库,它复制到MySQL从属。我们遇到的问题是MySQL在短时间内(几个小时)显示大量写入(但没有增加查询数量)。我们正在努力调查原因。

通常我们的二进制日志文件大小为1 GB,但在我们遇到这些问题期间,日志文件跳转到8.5 GB。

当我在其中一个8.5 GB二进制日志上运行mysqlbinlog --short-form BINARYLOG.0000时,它只返回196 KB的查询和数据。当我在正常的二进制日志(1 GB)上运行mysqlbinlog --short-form时,它返回大约8,500 KB的查询和数据库活动。这没有意义,因为它有7 GB的数据,但返回的日志文件少于1 GB。

我看到很多这些语句带有非常顺序的时间戳,但我不确定这是否与问题有关,因为它们既处于正常时期,也处于遇到这些问题时。

SET TIMESTAMP=1391452372/*!*/;COMMIT/*!*/;
SET TIMESTAMP=1391452372/*!*/;BEGIN/*!*/;COMMIT/*!*/;
SET TIMESTAMP=1391452372/*!*/;BEGIN/*!*/;COMMIT/*!*/;
SET TIMESTAMP=1391452372/*!*/;BEGIN/*!*/;COMMIT/*!*/;

我如何确定是什么导致这些二进制日志的大小气球,这也导致高写入,以至于服务器在点数处于脱机状态,几乎就像DDoS攻击一样?

即使二进制日志文件本身多了7 GB,mysqlbinlog如何能够返回这么少的数据呢?我该怎么做才能确定二进制日志为1 GB的正常时段与8 GB二进制日志出现问题的时间之间的区别?感谢您提供的任何帮助。

比尔

1 个答案:

答案 0 :(得分:1)

我猜你的日志包含某种形式的LOAD DATA [LOCAL] INFILE命令以及与它们相关的数据文件。这些命令不会生成太多SQL输出,因为它们的数据在处理期间由mysqlbinlog写入临时文件。你能检查输出是否包含任何这样的LOAD DATA命令吗?