我有一个 MySQL 开发服务器,它在某些数据库中使用 InnoDB 表。它最初是使用默认值设置的,因此所有数据都进入系统表空间(例如主表空间)ibdata1
文件)。一路上,我启用了innodb_file_per_table以便新的数据库表进入它们自己的文件。
我现在想通过删除一些开发数据库来回收磁盘空间。我知道我必须 mysqldump 并重新导入系统表空间中的那些数据库。确定重点关注哪些的最佳方法是什么?
我没有看到任何明显的东西 information_schema
数据库中。我可以使用 SSH shell 手动浏览服务器,但我正在寻找一种更自动化或更优雅的方式来做到这一点。
在一些较旧的数据库中,我只看到.frm
数据库目录中的文件,在较新的数据库中我看到.frm
并.ibd
文件。这似乎是知道数据在哪里的关键......
健全性检查:是否可以通过 mysqldump 一半的数据库来回收空间,或者你真的必须对每个数据库都做?该服务器中有 54 个使用 InnoDB 表的数据库。
注意:在 UNIX 上使用 MySQL v5.1。