我在C:\驱动器上有一个100 on的innodb表,现在C:\驱动器空间不足。我删除了很多行,但ibd文件并没有缩小。我在d:\驱动器上有超过200 up的可用空间,随后将tmpdir配置在d:\驱动器中,并试图在优化表时优化表.But。当我优化表时,它将占用c:\驱动器上剩余的所有空间,而不使用d:\
我应该更改哪些参数?
发布于 2015-01-18 22:52:24
如果不将其删除,则无法收缩innodb数据文件(默认名称为ibdata1) :S。
使用innodb引擎时,应该使用innodb_file_per_table=1
要解决您的空间问题,您应该:
1)执行数据库全备份:mysqldump -u root -pMyPassword -R --all-databases > full.sql
2)停止mysql服务
3)添加(或更改)参数innodb_file_per_table=1
4)丢弃已有的innodb数据文件(/$mysqldir/ibdata1)
5)启动mysql服务
6)恢复备份:mylsql -u root -pMyPassword mysql < full.sql
现在innodb数据文件不会再增长太多,优化表将允许您缩小涉及到的表数据文件,因为现在每个表都会占用它自己的数据文件。
使用符号链接(至少在Linux下),它允许您在不同的磁盘上定位数据库。
发布于 2015-01-18 22:38:46
有一个tmpdir参数可以解决这个问题。我认为你可以通过以下方式来设置
SET GLOBAL tmpdir = D:/temp在进行任何优化操作之前或在mysld下添加以下内容
set-variable = tmpdir=/var/tmp作为奖励,我强烈建议您使用
innodb_file_per_table=1让每个表有单独的文件,当然如果你有innodb表的话。此外,使用压缩数据将减少您的磁盘使用量。
https://stackoverflow.com/questions/28008111
复制相似问题