Mysql ibdata1 文件

Mysql ibdata1 文件

如果我删除 ibdata1 文件并重新启动服务器会发生什么,我的数据库是 MyISAM,我以前使用 InnoDB,但现在所有表都是 MyISAM。如果我删除此文件将是一个大问题。据我所知,当我重新启动服务器时会重新创建它,但我不明白该文件到底是什么!

答案1

您应该执行以下操作:

将其添加到 /etc/my.cnf

[mysqld]
跳过 innodb

然后执行以下操作:

  1. 服务 mysql 停止
  2. rm -f /var/lib/mysql/ib*
  3. 服务 mysql 启动

至于文件是什么:ibdata1 存储每个存在的 InnoDB 表的内部元数据。在删除 ibdata1 之前,请确保所有 InnoDB 表都已转换为 MyISAM 或 mysqldump 出来。还有另外两个文件:ib_logfile0 和 ib_logfile1。这些是 InnoDB 日志文件,用于保存未完全提交到磁盘的正在运行的事务以及 MVCC(多版本并发控制)数据。

按照上述三(3)步重启mysql后,InnoDB文件就不会再出现了。事实上,mysql的启动速度会快很多。

不要忘记扩大 key_buffer_size

答案2

InnoDB 将所有 ENGINE=InnoDB 的表的表空间存储在该文件中,而在 MyISAM 中,表空间存储在单独的 .MYD 和 .MYI 文件中。

干杯

答案3

是的,您可以删除 ibdata1 文件。但是,只要启用了 InnoDB 引擎,该文件就会在启动时重新创建。我不会在 mysqld 服务运行时删除此文件。

相关内容