我在C:\驱动器上有一个100Gb的innodb表,而C:\驱动器现在空间不足。我删除了很多行,但是ibd文件没有收缩。 我在D:\驱动器上有超过200Gb,随后配置tmpdir在d:\驱动器中并尝试优化表。但是当我优化表时,它占用了c:\驱动器上剩下的任何空间而不是使用d :\
我应该更改哪个参数?
答案 0 :(得分:1)
您不能缩小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下),它允许您在不同磁盘上查找数据库。
答案 1 :(得分:0)
有tmpdir参数。而且我认为你可以用
来设置SET GLOBAL tmpdir = D:/temp
在任何优化操作之前或在mysld
下添加以下内容set-variable = tmpdir=/var/tmp
作为奖励,我强烈建议您使用
innodb_file_per_table=1
如果你有innodb表,那么每个表都有单独的文件。 并且使用压缩数据也会减少磁盘使用量。