黔优媒体网-软文媒体自助发稿平台!
  1. 行业资讯
  2. 正文

mysql ibdata1是什么文件 ibdata1文件太大可以删除吗?

来源:黔优媒体网   时间:2024-09-03

ibdata1是什么文件 ibdata1文件太大可以删除吗?做网站的都知道,数据库一般用的是mysql数据库,最近发现一个奇怪的事情,/www/server/data 里面的ibdata1文件竟然有34G,难怪占用这么大空间,我又不敢直接删掉,那要怎么办呢,下面分享我的处理过程。

image.png

1:先备份全部数据库文件。

2:删除原来的数据库,或者删除idbata1文件。

3:重新安装新的数据库,在导入之前备份的。

mysql数据库ibdata1文件可以删除吗?

mysql数据库,随着使用时间越长, mysql数据库目录下的ibdata1文件就会越大,尤其是使用了Innodb引擎储存数据,典型的就是wordpress博客系统。

直接删除ibdata1文件会导致使用了Innodb引擎储存的数据表全部丢失,并且无法恢复,如果需要删除请一定先备份导出sql文件。

MySQL ibdata1文件太大的解决办法

在MySQL数据库中,如果不指定innodb_file_per_table=1参数单独保存每个表的数据,MySQL的数据都会存放在ibdata1文件里,时间久了这个文件就会变的非常大。

下面是参考网上的一些资料,把数据分别保存在各数据库子目录里的方法,这样新产生的ibdata1文件就不会太大了。下面是在Ubuntu 14.04.12 x64,MySQL5.5上对ibdata1进行瘦身,操作过程的整理。

1、备份数据库中的数据。

mysqldump -u root -p --extended-insert --all-databases --add-drop-database --disable-keys --flush-privileges --quick --routines --triggers > /home/all-database.sql

//有的文档用的是这样的参数:mysqldump -q -uroot -p --add-drop-table --all-databases --events >/home/all-database.sql

如果ibdata1上百GB,备份过程可能需要几小时。

2、停止MySQL服务。

service mysql stop

3、删除ibdata1、ib_logfile*等文件

mv ibdata1 ibdata1.20160419

mv ib_logfile0 ib_logfile0.20160420

mv ib_logfile1 ib_logfile1.20160420

4、修改my.cnf配置文件

vi /etc/mysql/my.cnf

在[mysqld]子项下增加如下配置:

innodb_file_per_table = 1

5、删除MySQL、performance_schema之外的所有数据库

cd /var/lib/mysql

rm -rf zabbix

服务器上只有Zabbix数据库。

6、重启MySQL服务

service mysql start

ps -ef|grep mysql

7、恢复数据(重新导入数据)

mysql -u root -p

Enter password:

source /home/all-databaes.sql

exit

//有的文档用这样的命令格式:mysql -uroot -p < /home/all-database.sql

Enter password:

其中的/home/all-database.sql即为第一步备份生成的文件,如果原来数据库中数据较多,还原过程可能会持续较长时间,请耐心等待还原完成。如果超过30个小时还没完成,可能要考虑中止恢复数据操作,先清除一部分table中的数据,从步骤1重新开始。如果table中记录特多又可以全部删除,用truncate 速度比较快。

经过以上几步后,可以看到新的ibdata1文件就只有几十兆了,数据及索引都变成了针对单个表的小

ibd文件了,它们在相应数据库的文件夹下面。


【免责申明】黔优媒体网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优媒体网官方立场,请读者仅做参考,本文标题:mysql ibdata1是什么文件 ibdata1文件太大可以删除吗?;欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法/违规的内容,请您立即联系我们及时修正或删除。(邮箱号: kefu@qianu.com)