Я заметил, что на одном из моих серверов не хватает места на диске из-за интенсивного использования 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