ibdata1文件很大怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ibdata1文件很大怎么办?相关的知识,希望对你有一定的参考价值。


转自:http://blog.csdn.net/szx9231/article/details/52159352

ibdata1文件是什么?
答:ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、撤销记录、修改buffer和双写buffer。如果file-per-table选项打开的话,该文件则不一定包含所有表的数据。当innodb_file_per_table选项打开的话,新创建表的数据和索引则不会存在系统表空间中,而是存放在各自表的.ibd文件中。
显然这个文件会越来越大,innodb_autoextend_increment选项则指定了该文件每次自动增长的步进,默认是8M。



是什么原因导致ibdata1文件会越来越大?
答:显然ibdata文件存的是数据库的表数据,如缓存,索引等。所以随着数据库越来越大,表也会越大,这个无法避免的。那么服务器硬盘空间不够了怎么办?我们只能把ibdata中的一些log文件都清掉。



怎么解决问题?
答:ibdata文件中包含的数据并不是我们都需要的,比如撤销日志,这些日志是可以定期删除的。但是之前是放在一个文件中,所以不好删除。因此最好的办法是把ibdata中需要存放的内容进行分开存放,除了
数据文件可以保存,其他不是非必要文件都单独存放并且定时清理。这样可以缓解数据库服务器磁盘的压力。



如果ibdata已经很大了该怎么办?
答:先把数据库文件备份下来,然后直接删除ibdata文件,重新导入数据库文件即可。这样就可以把ibdata中的日志和缓存都删除掉了。

或者改成独立表结构。

以上是关于ibdata1文件很大怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

mysql ibdata1删除了,怎么恢复数据

如何用ibdata1文件恢复数据库

服务器(centos)意外损坏,mysql数据库.frm和.idb和ibdata1都在的情况下,怎么恢复数据

ibdata1数据库如何恢复?

删掉mysql\data下的ib logfile0,ib logfile1和ibdata1可以吗?

查看数据库中都有哪些表空间