返回顶部
首页 > 资讯 > 数据库 >mysql的.ibd文件过大如何处理
  • 196
分享到

mysql的.ibd文件过大如何处理

2023-07-02 13:07:55 196人浏览 独家记忆
摘要

这篇文章主要介绍了mysql的.ibd文件过大如何处理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql的.ibd文件过大如何处理文章都会有所收获,下面我们一起来看看吧。一条zabbix微信的磁盘告警打破

这篇文章主要介绍了mysql的.ibd文件过大如何处理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql的.ibd文件过大如何处理文章都会有所收获,下面我们一起来看看吧。

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

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

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

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

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

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

最后如图:

mysql的.ibd文件过大如何处理

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

mysql的.ibd文件过大如何处理

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

mysql的.ibd文件过大如何处理

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

mysql的.ibd文件过大如何处理

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

mysql的.ibd文件过大如何处理

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

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

熟练的vim my.cnf

在[mysqld]下添加:

tmpdir = /ssd_data2/158mysql/107.sla

重启mysql实例

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

mysql的.ibd文件过大如何处理

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

mysql的.ibd文件过大如何处理

mysql的.ibd文件过大如何处理

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

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

mysql的.ibd文件过大如何处理

mysql的.ibd文件过大如何处理

mysql的.ibd文件过大如何处理

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

接下来是总结:

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

2)学习知识点:

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

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

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

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

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

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

关于“mysql的.ibd文件过大如何处理”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“mysql的.ibd文件过大如何处理”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: mysql的.ibd文件过大如何处理

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

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

猜你喜欢
  • mysql的.ibd文件过大如何处理
    这篇文章主要介绍了mysql的.ibd文件过大如何处理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql的.ibd文件过大如何处理文章都会有所收获,下面我们一起来看看吧。一条zabbix微信的磁盘告警打破...
    99+
    2023-07-02
  • 一次mysql的.ibd文件过大处理过程记录
    一条zabbix微信的磁盘告警打破了往常的宁静 收到告警之后发现是mysql的datadir目录,按着平时习惯开始排查;过程就不说了,最后发现某个库的目录大小异常,然后进去查看之后发现jdp_tb_trade.ibd过大...
    99+
    2022-06-29
    mysql .ibd文件特别大 mysql ibd文件过大 mysql中的ibd文件是啥
  • sql主文件过大如何处理
    如果SQL主文件过大,可以考虑以下几种处理方法: 分割文件:将大文件拆分成多个小文件,每个文件包含部分SQL语句,可以根据功能或...
    99+
    2024-04-09
    sql
  • .ibd文件在MySQL中的重要性及处理方式
    .ibd文件在MySQL中的重要性及处理方式 在MySQL中,数据存储是通过多个文件来实现的,其中最核心的是数据文件和索引文件。其中,对于MyISAM存储引擎来说,数据文件一般以.MY...
    99+
    2024-03-14
    mysql 数据文件 处理 数据丢失
  • Mysql怎么通过ibd文件恢复数据
    这篇文章主要介绍了Mysql怎么通过ibd文件恢复数据的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql怎么通过ibd文件恢复数据文章都会有所收获,下面我们一起来看看吧。恢复步骤1、创建数据库(随意创建)...
    99+
    2023-07-02
  • go语言编译文件过大如何处理
    如果Go语言编译文件过大,可以考虑以下几种处理方法:1. 使用静态链接:使用静态链接可以将依赖的库文件嵌入到可执行文件中,减少对外部...
    99+
    2023-10-21
    go语言
  • mysql通过.frm和.ibd 文件恢复数据库
     问题背景:由于强制在服务关闭mysql导致部分数据表以及数据丢失 如下图只有.frm .ibd的文件为我的问题文件 查找不到表结构和表数据目录D:XXXX\mysql-5.7.24-winx64\data\mydata  从frm文件中...
    99+
    2023-09-21
    数据库 mysql
  • MySQL 5.7 通过frm和ibd文件恢复数据
    MySQL 5.7 通过解析frm和ibd文件恢复数据 .frm文件存储表结构 .ibd文件存储数据 以恢复表IP_PATENT_APPLICANT_LIST为例, 有待恢复表文件IP_PATENT_...
    99+
    2023-10-20
    mysql 数据库 java
  • mysql中的ibd文件是什么
    mysql中的ibd文件是InnoDB存储引擎的表空间文件,用于存储数据和索引,每个InnoDB表都会对应一个或多个.ibd文件,其包含内容有:1、表的数据,包括表的行数据;2、索引,包括表的主键索引和辅助索引;3、MVCC数据,用于支持数...
    99+
    2023-07-25
  • Mysql通过ibd文件恢复数据的详细步骤
    恢复步骤 1、创建数据库(随意创建) 2、创建数据表(备注:表结构要和要恢复的表结构一致,row_format要和ibd文件的row_format一致,否则,会提示两者不一致。 当前row_format=dynamic)...
    99+
    2022-06-28
    mysql ibd 恢复数据 mysql通过ibd恢复数据 mysql通过idb恢复数据
  • 如何有效管理和维护MySQL数据库中的ibd文件
    在MySQL数据库中,每个InnoDB表都对应着一个.ibd文件,这个文件存储了表的数据和索引。因此,对于MySQL数据库的管理和维护,ibd文件的管理也显得尤为重要。本文将介绍如何有...
    99+
    2024-04-02
  • MySQL中的.ibd文件作用及管理方法
    MySQL中的.ibd文件作用及管理方法 在MySQL中,每个数据库表都会对应一个.ibd文件,这个文件承载着表中的实际数据。.ibd文件的作用非常重要,它存储了表的数据和索引信息,属...
    99+
    2024-03-14
    管理方法 数据表文件 索引数据文件 数据丢失
  • git文件过大怎么处理
    在使用 Git 进行文件版本控制时,有时候会遇到文件过大的情况。当文件过大,可能会导致 Git 执行速度变慢、内存占用增加甚至 Git 提交上传失败等问题。本文将介绍几种处理 Git 文件过大的方法。一、使用 Git LFS Git Lar...
    99+
    2023-10-22
  • 如何用vps处理大文件
    使用VPS处理大文件的一种常见方法是通过SSH连接到VPS,并使用命令行工具来操作文件。以下是一些可以帮助你处理大文件的常用命令:1...
    99+
    2023-09-08
    vps
  • mysql中ibd文件的作用是什么
    在 MySQL 中,.ibd 文件是InnoDB存储引擎使用的表空间文件。每个InnoDB表都有一个对应的 .ibd 文件,用于存储...
    99+
    2024-03-15
    mysql
  • MySQL中ibd文件的存储机制和管理策略
    MySQL中ibd文件的存储机制和管理策略 MySQL是一种常用的关系型数据库管理系统,广泛应用于各个领域的数据管理中。在MySQL中,数据表的数据和索引是以不同的方式进行存储的,其中...
    99+
    2024-04-02
  • golang如何高效处理大文件
    这篇文章主要介绍了golang如何高效处理大文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用Pandas分块处理大文件问题:今天在处理快手的用户数据时,遇到了一个差不多...
    99+
    2023-06-15
  • python如何处理大型json文件
    这篇文章主要为大家展示了“python如何处理大型json文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何处理大型json文件”这篇文章吧。如图所示,要处理的数据是一个json...
    99+
    2023-06-29
  • mysql中如何处理.mysql.history文件
    本篇文章给大家分享的是有关mysql中如何处理.mysql.history文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 安装了mysq...
    99+
    2024-04-02
  • MySQL中ibd文件的作用和特点详解
    MySQL中ibd文件的作用和特点详解 在MySQL数据库中,每个InnoDB表都对应一个.ibd文件,这个文件是InnoDB存储引擎用来存储表的数据和索引的地方。ibd文件是Inno...
    99+
    2024-03-15
    mysql 特点 ibd文件 sql语句
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作