Назад | Перейти на главную страницу

Поврежденная таблица 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                                                       |
+-------------------+-------+----------+---------------------------------------------------------------+

Как я могу это исправить? Просто запустить "REPAIR TABLE" не работает, я пробовал, но он так и не закончился (убил через 18 часов). Как мне сохранить данные?

Ваш стол (-ы) разбился. Это происходит с нетранзакционными базами данных, такими как MyISAM. Рассмотрите возможность перехода на InnoDB, если вам не нужен полнотекстовый поиск.

Всегда - надо починить, выхода нет. Попробуйте в оболочке исправить все ваши таблицы:

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