文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL中的ibdata1用法解读

2023-03-13 09:42

关注

MySQL的ibdata1用法

系统表空间是InnoDB数据字典、双写缓冲区、更改缓冲区和撤消日志的存储区域 。

如果表是在系统表空间中创建的,而不是在每个表文件或通用表空间中创建,则它还可能包含表和索引数据。

系统表空间可以有一个或多个数据文件。默认情况下,ibdata1会在数据目录中创建一个名为 的系统表空间数据文件 。系统表空间数据文件的大小和数量由innodb_data_file_path启动选项定义。

MySQL中的ibdata1用法解读

 ibdata1即Innodb data1的缩写,是innodb引擎的表空间,用于存放以下内容:

mysql 默认配置使用 innodb 引擎 innodb_file_per_table 默认是关闭的 , 因此表空间默认建立在 ibdata1 上

MySQL中的ibdata1用法解读

1 、默认情况下 ibdata 存放 InnoDB 表( InnoDB 数据字典)元数据、 undo logs 、 the change buffer, and the doublewrite buffer

2 、如果 innodb_file_per_table=0( 默认 =1) ,则 ibdata 也存放 InnoDB 表的实际数据,也就是 InnoDB 表建立后,不会再有单独的 tablename.ibd 文件 , 如果是 innodb_file_per_table=1, 存放 在新的表的 ibd 文件当中

3 、 虽 然 InnoDB 表 元 数 据 通 过 information_schema.tables 来 读 取 , 但 是 实 际 上 information_schema 是一个虚拟数据库,并不物理存在,这些数据真正存放的地方就是 ibdata redo 是写在 ib_logfile 中的 , 不写在 ibdata 中。

导致ibdata1 增长很快的原因

数据库中运行有长事务,记录了大量的UNDO信息,从而导致了ibdata1持续增长。

可以通过show engine innodb status ;命令来查看。

MySQL中的ibdata1用法解读

mysql中并未提供如何查看ibdata1中的存储内容信息。可以使用工具 innochecksum 来看。

ibdata1是什么?

MySQL使用InnoDB引擎的时候,ibdata1这个文件会随着时间的增长,会变得越来越大,占据大量的磁盘空间。

那么,ibdata1里保存了哪些东西,为什么会变得越来越大呢,让我们开看看ibdata1的构造。

ibdata1是InnoDB的共有表空间,默认情况下会把表空间存放在一个文件ibdata1中,会造成这个文件越来越大。

发现问题所在之后,解决方法就是,使用独享表空间,将表空间分别单独存放。MySQL开启独享表空间的参数是Innodb_file_per_table,会为每个Innodb表创建一个.ibd的文件。

操作步骤

下面讲一下具体的操作。

1) 导出数据库中所有数据

# mysqldump -u root -p --all-database > /tmp/all-database.dump

2) 删除数据库中数据

# mysql -u root -p
mysql> drop database dbname;

3) 停止MySQL

# /etc/init.d/mysqld stop

4) 删除ibdata1文件(移动到/tmp下)

# mv /var/lib/mysql/ibdata1 /tmp
# mv /var/lib/mysql/ib_logfile0 /tmp
# mv /var/lib/mysql/ib_logfile1 /tmp

5) my.cnf设定

# vi /etc/my.cnf
开启独享表空间,并指定ibdata1大小为1G,ibdata2大小200M,自动扩张。
innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:1G;ibdata2:200M:autoextend
innodb_file_per_table

6) 启动MySQL

# /etc/init.d/mysqld start

7) 导入数据

# mysql -u root -p < /tmp/all-database.dump

8) 确认

后记

开启独享表空间后,并不是说就不需要ibdata1了,因为在ibdata1中还保存着下面这些数据。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯