MySQL 损坏表 - 没有剩余空间 - 索引文件太大

MySQL 损坏表 - 没有剩余空间 - 索引文件太大

我注意到我的一台服务器由于 MySQL 使用量过大而磁盘空间不足。我停止了所有使用该数据库的操作,释放了一些空间并重新启动了 mysqld。

现在,我检查了我的表格CHECK TABLE table并得到了以下信息:

+-------------------+-------+----------+---------------------------------------------------------------+
| Table             | Op    | Msg_type | Msg_text                                                      |
+-------------------+-------+----------+---------------------------------------------------------------+
| db.table | check | warning  | Table is marked as crashed and last repair failed             |
| db.table | check | warning  | 1 client is using or hasn't closed the table properly         |
| db.table | check | warning  | Size of indexfile is: 8656211968      Should be: 1024         |
| db.table | check | error    | Size of datafile is: 3068555264         Should be: 3068558490 |
| db.table | check | error    | Corrupt                                                       |
+-------------------+-------+----------+---------------------------------------------------------------+

我该如何修复?简单地运行“修复表”不起作用,我试过了,但它从未完成(18 小时后被杀死)。我该如何保存数据?

答案1

您的表已崩溃。这种情况发生在非事务性数据库(如 MyISAM)中。如果您不需要全文搜索,请考虑迁移到 InnoDB。

无论如何,你必须修复它,没有其他办法。在 shell 中尝试以下操作来修复所有表:

#myisamchk --force --fast --update-state /path/to/your/database/*.MYI

相关内容