论坛首页 综合技术论坛

如何释放已删除的InnoDB磁盘空间

浏览 4671 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-07-06  
Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长。如果想彻底释放这些已经删除的数据,需要把数据库导出,删除InnoDB数据库文件,然后再倒入。 下面是基本的步骤:

1 使用mysqldump命令将InnoDB数据库导出

2 停止MySQL

3 删除所有InnoDB数据库文件和日志

4 启动MySQL并自动重建InnoDB数据库文件和日志文件

5 导入前面备份的数据库文件

有一点要注意,你配置了MySQL数据库复制,当你导入数据库备份文件的时候,所有的Query都可能会被写入Binlog,可以执行SET SQL_LOG_BIN = 0;暂时停止Binlog的写入。

还有一种方式是在创建数据库的时候设置innodb_file_per_table,这样InnoDB会对每个表创建一个数据文件,然后只需要运行OPTIMIZE TABLE 命令就可以释放所有已经删除的磁盘空间。
   发表时间:2010-07-06  
dump出来的东西里面没有query吧?

而且binlog里面也没有query吧?

http://ftp.ku.ac.th/pub/mirror/mysql/doc/refman/5.1/en/binary-log.html

引用

The binary log is not used for statements such as SELECT or SHOW that do not modify data.
0 请登录后投票
   发表时间:2010-07-06  
myreligion 写道
dump出来的东西里面没有query吧?

而且binlog里面也没有query吧?

http://ftp.ku.ac.th/pub/mirror/mysql/doc/refman/5.1/en/binary-log.html

引用

The binary log is not used for statements such as SELECT or SHOW that do not modify data.


我所指的是Insert Query。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics