两天前,我们的 MySQL RDS 实例的 BinLogDiskUsage、CPUUtilization、NetworkReceiveThroughput 和 NetworkTransmitThroughput 突然激增。
结果是数据库响应极其缓慢,但并非没有响应。对连接到数据库的 API 的请求的响应时间比正常情况长 10 倍。
WAF 并未表明流量有所增加(尽管它确实与一天中最繁忙的时段一致)。
三小时内,情况自行解决,响应时间恢复正常。
我的问题是:
- 什么会导致BinLogDiskUsage突然增加?
- 为什么这会导致 DB 变得如此缓慢,CPUUtilization 仅达到 20% 左右?(我是否混淆了因果关系?)
如果有帮助的话,max_binlog_size
就是134217728
由于在存在大量 INSERT、UPDATE、DELETE 和一些 DDL 时写入二进制日志,因此您需要查找端上可能批量加载数据的任何进程。
例子
回答这个问题的唯一方法是运行
mysqlbinlog --read-from-remote-server
将二进制日志的内容转储到磁盘文件(如果 2 天前的二进制日志仍然可用)。你应该运行这个
将二进制日志保留 1 周(336 是两周)
然后去检查二进制日志内容并查看事件是什么。