IT人

当前位置:主页 > 经验教程 > 硬件教程 >

如何解决由触发器导致mysql内存溢出问题

更新:2025-01-26 22:41:54 来源:IT人 作者:马勇
导读:如何解决由触发器导致mysql内存溢出问题,小编为大家解答如何解决由触发器导致mysql内存溢出问题的IT知识,一起来了解了解吧。 1、问题现象 一台从库服务器的内存使用率持续上升,最终导致 MySQL 服务被 kill 了

如何解决由触发器导致mysql内存溢出问题

小编为大家解答如何解决由触发器导致mysql内存溢出问题的IT知识,一起来了解了解吧。

1、问题现象

一台从库服务器的内存使用率持续上升,最终导致 MySQL 服务被 kill 了。

内存监控视图如下:

如何解决由触发器导致mysql内存溢出问题

从图中可以看出,在 00:00 左右触发了 kill,然后又被mysqld_safe进程拉起,然后内存又会持续上升。

2、排查过程

基本信息

  • 数据库版本:MySQL 5.7.32
  • 操作系统版本:Ubuntu 20.04
  • 主机配置:8C64GB
  • innodb_buffer_pool_size:8G

由于用户环境未打开内存相关的监控,所以在my.cnf配置文件中配置如下:

performance-schema-instrument = 'memory/% = COUNTED'

打开内存监控等待运行一段时间后,相关视图查询如下:

如何解决由触发器导致mysql内存溢出问题

如何解决由触发器导致mysql内存溢出问题

从上述截图可以看到,MySQL 的buffer pool大小分配正常,但是memory/sql/sp_head::main_mem_root占用了 8GB 内存。

查看源代码的介绍:

相关阅读