我最近在/var/lib/mysql
中有一个8GB的ibdata1文件,因为我之前的一个数据库以8GB的数据发送垃圾邮件。我删除了垃圾邮件数据库,并在MySQL终端中运行以下查询
SELECT table_schema "Database Name", sum( data_length + index_length ) / 1024 / 1024 "Database Size in MB" FROM information_schema.TABLES GROUP BY table_schema;
在我的数据库中产生了100MB的组合数据。不过我的ibdata1文件仍然是8GB。那么我按照接受的答案的说明重新生成我的ibdata1和日志文件:
How to shrink/purge ibdata1 file in MySQL
这很有用。
但是,一旦我重新启动Linux服务器,MySQL服务器中的许多数据库(但不是全部)突然没有数据。我在innodb_file_per_table
文件中的适当位置使用和不使用my.conf
重复了接受的答案中的说明,但它仍然无法阻止Linux重启后MySQL数据库的破坏。我注意到我的ibdata1文件不再超过10MB。
现在,我已经重新导入了我的所有数据库,虽然工作正常,但我担心在服务器需要重新启动时丢失所有数据。
为什么会这样?如何在Linux服务器重启后阻止MySQL数据库的破坏?