Заметил однажды в логах FreeRADIUS ошибку MySQL:
Table ‘./radius/radacct’ is marked as crashed and last (automatic?) repair failed
Как оказалось была повреждена таблица radacct, так как данные там были не особо важны, то помогла очистка всей таблицы.
Очистить можно через phpMyAdmin или SQL запросом:
truncate table TableName
Чуть позднее для эксперимента решил поломать целую базу, взял другую большую таблицу вообще от другого приложения, размером около 8 гигабайт и 80 млн. строк.
Выполнил к ней SQL запрос на очистку старых строк до указанной в запросе даты и перезагрузил в этот момент MySQL, запрос прервался, база осталась цела, выполнил запрос на оптимизацию базы и еще раз перезагрузил MySQL, в итоге получил поврежденную базу и аналогичную ошибку:
#144 — Table ‘name’ is marked as crashed and last (automatic?) repair failed
Чтобы восстановить базу необходимо остановить MySQL сервер (если таблица ничем не используется, то можно не останавливать):
sudo service mysql stop
Перейдем в директорию с базой:
cd /var/lib/mysql/$DATABASE_NAME
Выполним команду восстановления указанной таблицы:
myisamchk -r -o -f -v $TABLE_NAME
По завершению если останавливали MySQL сервер, то запустим его:
sudo service mysql start
Аналогичным образом на тесте также для ускорения процесса восстановил таблицу скопировав её на другой более мощный сервер, а именно три файла /var/lib/mysql/$DATABASE_NAME/ ($TABLE_NAME.MYD, $TABLE_NAME.MYI, $TABLE_NAME.frm).
Спасибо огромное, ваша статься помогла поднять сайт и вернуть права дамину сайта.