我在 C:\驱动器上有一个 100Gb 的 innodb 表,现在 C:\驱动器空间不足。我删除了很多行,但 ibd 文件没有缩小。 我在 D:\drive 上有超过 200Gb 的可用空间,随后将 tmpdir 配置为在 d:\drive 中并尝试优化表。但是当我优化表时,它占用了 c:\驱动器上剩余的所有空间并且不使用 d :\
我应该更改什么参数?
最佳答案
您不能在不删除 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 数据文件不会再增长太多,优化表将允许您缩小涉及的表数据文件,因为现在每个表都会管理它自己的数据文件。
使用符号链接(symbolic link)(至少在 Linux 下),它允许您在不同的磁盘上定位数据库。
关于Mysql Innodb优化表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008111/