mysql的ibdata1怎么删除或清空
解决方案
7
假如你的 ibdata文件 太大 基本上是 原因是 innodb 共享表空间文件的设置导致的
清理的话
需要先
dump出数据,关闭mysql 修改my .cnf 文件
然后删除 ibdata文件 ,和一些应用数据库文件
启动mysql 之后, 验证一些 参数设置能否成功
最后 再把dump出来的数据进行导入
这时候 ibdata 文件 将不会像之前那么大了
参考一下这个吧
http://blog.chinaunix.net/uid-24373487-id-4223322.html
清理的话
需要先
dump出数据,关闭mysql 修改my .cnf 文件
然后删除 ibdata文件 ,和一些应用数据库文件
启动mysql 之后, 验证一些 参数设置能否成功
最后 再把dump出来的数据进行导入
这时候 ibdata 文件 将不会像之前那么大了
参考一下这个吧
http://blog.chinaunix.net/uid-24373487-id-4223322.html
7
ibdata1 无法直接清空,只能先mysqldump导出全部数据,然后停止MYSQL服务,再删除IBDATA1文件,后再恢复全部数据库。
6
不同的mysql版本,可以有不同的处理方法。
假如是5.6之前的版本,只能mysqlump导出数据,之后,删除掉数据库,之后停掉mysql,然后删除ibdata1 和ib_logfile,和数据库目录,然后启动mysql,重新建数据库导入数据。
假如是5.6之后的版本,并且innodb_file_per_table 设置的0 ,那做法同上。假如是innodb_file_per_table 设置的1,那可以导出表结构,之后停掉mysql,备份data目录下的那些数据库目录,之后删除这些目录。之后删除ibdata1 和ib_logfile,然后启动mysql,创建数据库导入之前备份的表结构,然后对全部innodb 引擎的表执行 alter table xxx discard tablespace 的命令,之后,把备份的目录下的文件拷贝过去覆盖,设置好目录文件权限之后,再import tablespace,对myisam引擎的执行 repair ,之后重建一下索引,就OK了,其实也挺麻烦的,貌似还不如直接导出备份,再导入。
另外,有些版本。例如忘了是阿里还是哪个提供了一个修改版的mysql,是可以在线收缩ibd文件的,不过本人只是看到过,没太留意。
假如是5.6之前的版本,只能mysqlump导出数据,之后,删除掉数据库,之后停掉mysql,然后删除ibdata1 和ib_logfile,和数据库目录,然后启动mysql,重新建数据库导入数据。
假如是5.6之后的版本,并且innodb_file_per_table 设置的0 ,那做法同上。假如是innodb_file_per_table 设置的1,那可以导出表结构,之后停掉mysql,备份data目录下的那些数据库目录,之后删除这些目录。之后删除ibdata1 和ib_logfile,然后启动mysql,创建数据库导入之前备份的表结构,然后对全部innodb 引擎的表执行 alter table xxx discard tablespace 的命令,之后,把备份的目录下的文件拷贝过去覆盖,设置好目录文件权限之后,再import tablespace,对myisam引擎的执行 repair ,之后重建一下索引,就OK了,其实也挺麻烦的,貌似还不如直接导出备份,再导入。
另外,有些版本。例如忘了是阿里还是哪个提供了一个修改版的mysql,是可以在线收缩ibd文件的,不过本人只是看到过,没太留意。