手掌心
这ibdata1不是缩小是一个特别恼人的MySQL功能。该ibdata1文件实际上不能缩小,除非你删除所有数据库,删除文件并重新加载转储。但您可以配置MySQL,以便将每个表(包括其索引)存储为单独的文件。这样ibdata1就不会变得那么大。根据Bill Karwin的评论,默认情况下启用MySQL版本5.6.6。不久前我做到了这一点。但是,要将服务器设置为为每个表使用单独的文件,您需要更改my.cnf以启用此功能:[mysqld]innodb_file_per_table=1http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html由于你想从ibdata1你那里收回空间,你实际上必须删除该文件:做mysqldump的所有数据库,过程,触发器等,除了mysql和performance_schema数据库删除除上述2个数据库之外的所有数据库停止mysql删除ibdata1和ib_log文件启动mysql从转储恢复当你在步骤5中启动MySQL ibdata1和ib_log文件将被重新创建。现在你适合去。创建新数据库进行分析时,表将位于单独的ibd*文件中,而不是位于ibdata1。由于您通常不久后ibd*删除数据库,文件将被删除。http://dev.mysql.com/doc/refman/5.1/en/drop-database.html您可能已经看到了这个:http://bugs.mysql.com/bug.php?id = 1341通过使用该命令ALTER TABLE ENGINE=innodb,OPTIMIZE TABLE 可以从ibdata1中提取数据和索引页面以分离文件。但是,除非您执行上述步骤,否则ibdata1不会缩小。关于information_schema,这是不必要的也不可能下降。它实际上只是一堆只读视图,而不是表。并且没有与它们相关联的文件,甚至也不是数据库目录。在informations_schema使用内存数据库引擎和被丢弃并在mysqld的停止/重启再生。请参阅https://dev.mysql.com/doc/refman/5.7/en/information-schema.html。