广告
返回顶部
首页 > 资讯 > 数据库 >一个mysql /tmp目录爆满问题的处理
  • 317
分享到

一个mysql /tmp目录爆满问题的处理

2024-04-02 19:04:59 317人浏览 八月长安
摘要

突然收到zabbix告警,说Mysql服务器的/目录磁盘空间不足。登录到服务器,看了下发现100GB的根目录,居然使用了差不多90GB。这台服务器上只跑了一个mysql,应该不是日志未清理等其它原因造成的。

突然收到zabbix告警,说Mysql服务器的/目录磁盘空间不足。

登录到服务器,看了下发现100GB的根目录,居然使用了差不多90GB。这台服务器上只跑了一个mysql,应该不是日志未清理等其它原因造成的。


(说明:下面的几张截图是后期截的,当时已经有部分sql跑完,释放掉部分磁盘空间了)

lsof |grep deleted 发现如下:

一个mysql /tmp目录爆满问题的处理可以看到这个临时文件差不多有40GB。



show processlist; 如下:

一个mysql /tmp目录爆满问题的处理

上图看的话,没有涉及到写binlog的操作,但是由于单纯的select并不会造成/tmp目录爆满的情况,所以猜测他这个同一个事务里面之前还有涉及到写binlog的操作(update、delete等)。



官方的说明:

https://dev.mysql.com/doc/refman/5.6/en/binary-log.html

When a thread that handles the transaction starts, it allocates a buffer of binlog_cache_size to buffer statements. If a statement is bigger than this, the thread opens a temporary file to store the transaction. The temporary file is deleted when the thread ends.


The Binlog_cache_use status variable shows the number of transactions that used this buffer (and possibly a temporary file) for storing statements. TheBinlog_cache_disk_use status variable shows how many of those transactions actually had to use a temporary file. These two variables can be used for tuning binlog_cache_size to a large enough value that avoids the use of temporary files.

The max_binlog_cache_size system variable (default 4GB, which is also the maximum) can be used to restrict the total size used to cache a multiple-statement transaction. If a transaction is larger than this many bytes, it fails and rolls back. The minimum value is 4096.

If you are using the binary log and row based logging, concurrent inserts are converted to nORMal inserts for CREATE ... SELECT or INSERT ... SELECTstatements. This is done to ensure that you can re-create an exact copy of your tables by applying the log during a backup operation. If you are using statement-based logging, the original statement is written to the log.


当事务开始时,它将缓冲区语句分配一个binlog_cache_size大小的缓冲区(我这里设置的是16777216bytes,即16MB)。 如果一个语句大于此,线程将打开一个临时文件来存储事务(默认是存放在/tmp/目录下)。 当线程结束时,临时文件会自动被删除。


上面就是因为事务里面的临时文件超过16MB了,被放到/tmp目录下了,但是这个临时文件实在太大了,导致磁盘空间不足告警了。


解决方法:

等上面的查询结束后,我们先关闭mysqld。(条件能允许的话,当然是让查询自己结束。如果直接kill掉的话,估计回滚也要话挺长时间的)


然后调整mysql的tmpdir到其他更大的磁盘去。

mkdir /bdata/mysql_tmp

chown mysql.mysql /bdata/mysql_tmp -R

chown 1777 -R /bdata/mysql_tmp -R

vim /etc/my.cnf 

[mysqld]

tmpdir = /bdata/mysql_tmp


然后启动mysql即可

再次执行lsof|grep deleted 可以看到临时文件的路径已经改到了/bdata/mysql_tmp目录下了。

一个mysql /tmp目录爆满问题的处理


您可能感兴趣的文档:

--结束END--

本文标题: 一个mysql /tmp目录爆满问题的处理

本文链接: https://www.lsjlt.com/news/40239.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 一个mysql /tmp目录爆满问题的处理
    突然收到zabbix告警,说mysql服务器的/目录磁盘空间不足。登录到服务器,看了下发现100GB的根目录,居然使用了差不多90GB。这台服务器上只跑了一个MySQL,应该不是日志未清理等其它原因造成的。...
    99+
    2022-10-18
  • 基于ORA-19815闪回空间爆满问题的处理方法
    闪回区爆满问题也是经常会遇到的问题,最关键的是闪回设置大小以及归档被默认存放在了闪回目录,恰巧今天又遇到了这个问题,就记录下处理步骤,仅供遇到这类问题的人参考。 一、错误现象描述 1)应用端错误信息 E...
    99+
    2022-10-18
  • 记录一个等保二的项目的漏洞处理
    一、高危漏洞: 1、HTTP.sys remote code execution vulnerability(HTTP.sys 远程代码执行漏洞) 漏洞描述: HTTP 协议栈 (HTTP.sys) 中存在一个远程执行代码漏洞,该漏洞是由于...
    99+
    2023-09-28
    安全 web安全 服务器
  • MySQL中server_id一致带来的问题如何处理
    小编给大家分享一下MySQL中server_id一致带来的问题如何处理,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 简介 我们都知道在MySQL搭建复制环境的时候,需要设置每个ser...
    99+
    2022-10-18
  • MySQL处理空值时需要注意的两个问题
    本篇内容介绍了“MySQL处理空值时需要注意的两个问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MyS...
    99+
    2022-10-18
  • Go语言中如何处理并发文件的文件系统目录遍历问题?
    Go语言中如何处理并发文件的文件系统目录遍历问题?在日常开发中,我们经常需要对文件系统中的文件进行遍历操作。而在Go语言中,通过利用goroutine和channel的特性,我们可以很方便地进行并发的文件系统目录遍历。首先,我们需要引入fi...
    99+
    2023-10-22
    并发处理 Go语言编程 文件系统遍历
  • 如何处理MySQL多个timestamp字段自动添加默认值的问题
    这篇文章主要介绍如何处理MySQL多个timestamp字段自动添加默认值的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! MySQL版本5.6.14...
    99+
    2022-10-18
  • 由于目录变更引起的数据服务无法启动的问题该怎么处理
    这篇文章将为大家详细讲解有关由于目录变更引起的数据服务无法启动的问题该怎么处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。由于目录变更引起的数据服务无法启...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作