一次mysql的.ibd文件过大处理过程记录

 更新时间:2022年6月29日 13:39  点击:407 作者:精神病院里病最重的人

一条zabbix微信的磁盘告警打破了往常的宁静

收到告警之后发现是mysql的datadir目录,按着平时习惯开始排查;过程就不说了,最后发现某个库的目录大小异常,然后进去查看之后发现jdp_tb_trade.ibd过大,达到46G;跟真实数据量不符,就此打算对它下手处理。

那么,我们知道ibd文件是每个数据库里面每个表的数据空间,每个表的数据和索引都会存在自已的表空间中。

这么重要的东西肯定不能直接在线上操作,毕竟之前完全不知道处理这个东西会产生什么影响,那接下来就是测试环境的再现过程了:

测试环境:配置直接cp线上的my.cnf

然后建库建表,插入数据,使该表的ibd文件增大

最后如图:

该文件46G,表里面的数据也有八百多万条,接下来就是再现线上环境的操作了(线上环境增删操作多),先删个10数据,并且用优化命令对该表进行优化(optimize):

但是发现在等待该命令执行结果的过程中,根目录一直在增长:

直到跟目录被占用百分百之后,优化命令报错了:

报错之后跟目录空间瞬间释放了:

这里我当时猜想到是因为临时表的问题,但是不知道怎么改临时表的存储目录,那肯定是不懂就问。

问了DBA 大佬后,说是修改tmpdir参数即可(默认是指向tmp目录):

熟练的vim my.cnf

在[mysqld]下添加:

tmpdir = /ssd_data2/158mysql/107.sla

重启mysql实例

在mysql命令符下查看该参数目录是否生效:

那就再执行一遍优化命令:

成功了,文件也缩小了一个G。

接下来我又进一步测试,删除表里面数据,只保留10万条数据;再执行optimize命令,并且观察目录占用大小情况:

这里值得一提的是:optimize命令执行时间只用了15分钟,通过观察目录的变化发现临时表大小大概在45G左右。

接下来是总结:

1)我原以为做一些小小的改动(只删除了10条数据)会很快得到实验的结果,结果可以在图上面看到optimize命令执行了一个半小时;但是后面我再一次测试发现只用了15分钟,可能是服务器上其他业务影响了,时间上不好下结论。
这个命令会产生锁表的效应,所以时间上需要注意。

2)学习知识点:

1、ibd文件为何物,里面是放什么东西的:
上面也说到,是放表的元数据,索引。

2、optimize这个命令的相关知识,会对数据库造成什么影响等:
已知有:
执行过程中会锁表
会产生临时表,占用一定的空间
会影响主从延迟
(欢迎留言补充)

3、tmpdir这个参数:
临时表指定存放目录
可以跟innodb_tmpdir参数对比学习

4、这里要提一个参数 “innodb_file_per_table=1”
配置文件里最好把这个参数打开,因为生产环境用的是innoDB的引擎,然后innodb会默认将所有库的表数据都存储在一个共享空间中:ibdata1,这样不方便我们平时的优化。
该参数是让每个表都会产生一个独立的ibd文件(也就是数据空间)

3)为什么会产生这样的事情呢?:

个人理解:平时我们删除数据时,会使得表的ibd文件产生空隙:也就是说,删除数据之后它会傻傻的空在哪里,如果没有数据补进来就会一直空着;然后重复这增加,删除一系列操作之后,该文件随着时间的推移变得越来越大。

目前我所知没有特别好的办法避免这一点,不过定时优化就好;

总结

到此这篇关于一次mysql的.ibd文件过大处理过程的文章就介绍到这了,更多相关mysql .ibd文件过大处理内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

原文出处:https://blog.csdn.net/weixin_44466805/article/details/999477

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • MySQL性能监控软件Nagios的安装及配置教程

    这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
  • 详解Mysql中的JSON系列操作函数

    新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下...2016-08-23
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • 深入研究mysql中的varchar和limit(容易被忽略的知识)

    为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql中遇到的一些commen sense类型的问题。 ...2015-03-15
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25