MySQL的ibdata1文件占用过大瘦身

article/2025/10/8 5:49:35

处理MySQL的ibdata1文件过大问题

本人在对数据库进行大量的数据插入和删除的时候,发现ibdata1的占了将近一个T

ibdata1文件是什么?

ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、撤销记录、修改buffer和双写buffer。如果file-per-table选项打开的话,该文件则不一定包含所有表的数据。当innodb_file_per_table选项打开的话,新创建表的数据和索引则不会存在系统表空间中,而是存放在各自表的.ibd文件中.

显然这个文件会越来越大,innodb_autoextend_increment选项则指定了该文件每次自动增长的步进,默认是8M.

是什么原因导致ibdata1文件会越来越大?

ibdata1存放数据,索引和缓存等,是MYSQL的最主要的数据。所以随着数据库越来越大,表也会越大,这个无法避免的。如果时间长了,越来越大,我们在处理日志和空间的时候就不是那么方便了,就不知从何入手了。接下来我们就要处理下这样的情况,分库存储数据。

该如何处理呢?

首先我们把数据库文件备份下来,然后直接删除ibdata文件(为了保险起见最好先全备一次,做到数据安全和完整),然后再重新导入数据库文件即可!

具体操作步骤如下(截图并不完整,但是首先要弄懂大概情况和原理):

第一种方法:

1、停止业务,备份一次全库

mysqldump -uroot -ppassword --all-databases  > all_mysql.sql

2、备份完成,停止数据库

systemctl stop mariadb 或者 service mysqld stop

3、修改配置文件

在[mysqld]下增加下面配置 innodb_file_per_table=1 验证配置是否生效,可以重启mysql后,执行 #service mysqld restart

4、验证

mysql -uroot -ppassword mysql

show variables like '%per_table%';

+-----------------------+-------+

| Variable_name | Value |

+-----------------------+-------+

| innodb_file_per_table | ON |

+-----------------------+-------+

1 row in set (0.00 sec)

innodb_file_per_table的状态变为ON

5、删除ibdata1文件和日志

rm -rf ibdata1

rm -rf ib_logfile*

6、还原数据库

mysql -uuser -ppassword

source all_mysql.sql

数据文件单独存放(共享表空间改为每个表独立的表空间文件)。

第二种方法:

把数据库的表引擎为InnoDB 的数据表转为MyIsam 后,删除ibdata1,按上面方法修改成独立的表空间,在把改成MyIsam引擎的表改为InnoDB,这个就要衡量那种方法的时间耗时最短,两者取其优。数据的表和库很多的通常不建议这么做,耗时间。


http://chatgpt.dhexx.cn/article/thSnXyGp.shtml

相关文章

【数据库篇】MySQL InnoDB ibd 文件格式解析

mysql innodb的表由.frm .ibd 组成,frm:存了每个表的元数据,包括表结构的定义等;ibd:存了每个表的元数据,包括表结构的定义等; 1.0 ibd文件基本结构 ibd文件由Tablespaces,Segments,Extents,P…

mysql 里的 ibdata1 文件

为什么 mysql 里的 ibdata1 文件不断的增长? 转自:http://linux.cn/article-5829-rss.html ibdata1 file 我们在 Percona 支持栏目经常收到关于 MySQL 的 ibdata1 文件的这个问题。 当监控服务器发送一个关于 MySQL 服务器存储的报警时,恐慌…

mysql ibdata1

ibdata1是什么? Mysql ibdata1即Innodb data1缩写,是innodb引擎的表空间,用于存放 数据字典Data dictionary: 只读的表,存储对象的相关信息,如占用空间,列的缺省值,约束信息&…

MySQL 中的 ibdata1

系统表空间是InnoDB数据字典、双写缓冲区、更改缓冲区和撤消日志的存储区域 。如果表是在系统表空间中创建的,而不是在每个表文件或通用表空间中创建,则它还可能包含表和索引数据。 系统表空间可以有一个或多个数据文件。默认情况下,ibdata1…

分享篇 | MySQL的ibdata1是个啥,为啥越来越大,怎么缩小?

同事的一个问题: MySQL的ibdata1文件越来越大,这是为啥、 看着别扭,怎么搞小它? ibdata1文件是什么? ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、undo日志、修改buffe…

js类型转换题

考察隐式类型转换: 1.号一侧出现了字符串,就用String()将不是字符串的变成字符串,最后拼接在一起 2.-号则会调用显示类型转换Number(),将非数字转换成数字,进行计算 true 0 和 true false 都是隐式调用Number()变成…

JS中的强制类型转换

概念 这里我们首先需要知道什么是值类型转换 值类型转换:将值从一种类型转换为另一种类型,就是类型转换,分显示转换和隐式转换 js类型转换出的值都是基本类型(number、boolean、string、null、undefined、string)&a…

JavaScript——数据类型的转换

目录 一、其他类型转化成字符串类型 1. 把数字型转换为字符串型 变量.toString() 2. 利用 String(变量) 3. 利用 拼接字符串的方法实现转换效果 隐式转换 二、其他类型转化成数字类型(重点) 1. parseInt(变量) 可以把 字符型的转换为数字型…

JavaScript类型转换规则

类型转换 先梳理一下es6之前有五种基本数据类型:Null、Undefined、String、Number 、Boolean 布尔类型转换规则 直观上为空的值(0、空字符串、null、undefined、和NaN)将变为false 注意 :包含"0" 为true console.log(Boolean("")); //falseconsole.log(…

JavaScript类型转换

javascript是一种弱类型的语言,变量和类型无关,所以有时需要我们进行类型转换 一、数字型转换(number) 两种方法: 1、number:类型转化走的是v8引擎最底层机制的转化规则: 先将引用类型转化为…

js类型转换

NaNi??? 一、显性类型转换 强制类型转换主要是指通过String、Number和Boolean等构造方法手动转换成对应的字符串、数字和布尔值。 1.1 转为字符串 1.1.1 原始类型转字符串 原始类型字符串string :‘str’“str”number : 123“123”Boolean“true”/“fals…

Axure 9.0.0.3701 授权码

产品经理主力工具 Axure 在2020年5月26日更新了最新的 3701 版本,具体更新如下: 很多小伙伴在更新后会出现之前的授权无法使用的情况,如果出现这种情况大家可以通过在产品栈查找相对应的版本进行获取最新的授权码。 获取地址:http…

Axure 8.0/9.0 注册码 激活码 授权码 License

先查版本号,根据版本号在下面的网址查找对应的授权密钥(没有的话,可以试试相近版本) https://7rp.cn/34

Axure 9.0.0.3704 授权码

产品经理常用工具软件 Axure 又更新啦,本次更新版本为 Axure RP 9.0.0.3704,具体更新如下: 如何查看版本号: 更新后效果: 很多小伙伴在更新到最新版本后之前的授权出现了失效的情况,下边栈长为大家准备了最…

全网超详细的【Axure】Axure RP 9的下载、安装、中文字体、授权

文章目录 1. 文章引言2. 下载Axure93. 安装Axure94. Axure9中文5. Axure9授权 1. 文章引言 最近在学习原型图,针对画原型图的工具,反复对比墨刀、Axure、xiaopiu后,最终选择了Axure。 接下来,我便从Axure RP 9的下载、安装、中文…

Axure 8授权码

转自:Axure 8.1.0.3372亲测可用授权码 只为记录下 被授权人: zdfans.com 授权密钥: gP5uuK2gHiIVO3YFZwoKyxAdHpXRGNnZWN8Obntqv7FF3pAz7dTu8B61ySxli

Axure RP9授权码

axure rp9安装教程(如需免费版安装包请点击此处) 1.下载本站提供的压缩包进行解压 2.双击AxureRP-setup9.exe安装程序进行安装 3.点击下一步 4.勾选我同意,点击下一步 5.选择安装位置默认也可以 6.静静的等待安装 7.安装好后点击完成安装&…

combinations()函数(python)

itertools.combinations(iterable, r) 从可迭代对象iterable中选取r个单位进行组合,并返回一个生成元组的迭代器 定义 def combinations(iterable, r):# combinations(ABCD, 2) --> AB AC AD BC BD CD# combinations(range(4), 3) --> 012 013 023 123pool…

Combiner合并案例

Combiner合并案例 需求1. 需求说明2. 文件 案例分析1. 需求分析2. 输入数据3. 期望输出数据4. 实施方案(1)方案一(2)方案二 代码实现1. 基于wordcount案例2. 方案一3. 方案二 结果截图 需求 1. 需求说明 统计过程中对每一个MapT…

MapReduce的Combiner详解

核心意义 :减少集群之间的网络开销具体实现步骤 1.自定义一个Combiner 继承 reduce 重写reduce方法2.在 job 中设置:job.setCombinerClass(Combiner类.class) 注意: combiner 能够应用的前提是不能影响最终的业务逻辑,而且,combiner 的输出 kv 应该跟 …