Сижу я, значит, в Беверли (в смысле не Калифорния, штаты Америки, где, кстати, можно купить квартиры в беверли хилз эдак начиная от полутора лямов евро - а всего лишь в бургерной на Сретенском). Сижу, никого не трогаю, кофе пью. Звонит клиент, у него паника, все сломалось, сос, помогите.
Смотрю - внатуре все сломалось. Точнее, сломалась табличка в БД. Пытаюсь сделать REPAIR TABLE - болт, не работает. А бэкап последний старше недели - вот ведь факап! Выбираю "звонок другу", то бишь как обычно сисадмину нашему. Он советует гуглить "myisam check". Гуглю, лезу в консоль, туда-сюда, оппа - все работает!
Вот я молодец, правда? )) На память записываю, чо как там, в этой консоли проклятой, делается.
1. Выключаем mysql-сервер, у меня так:
/etc/init.d/mysql stop
2. Делаем бэкап файлов с табличками, потому что в доках написано, что надо, потому что все может поломаться совсем. В моем случае - я тупо скопировал 3 файла из /var/lib/mysql/database/:
- table.frm
- table.MYD
- table.MYI
Где "database" - название базы, где сдохла табличка, а "table" - название самой сдохшей таблички. Если бы все сдохло, я бы эти файлы залил обратно, а дальше ХЗ чо делал бы, но по крайней мере они бы у меня остались :)
3. Смотрим, что сломалось, используя команду myisamchk:
myisamchk /var/lib/mysql/table.MYI
Оно пишет много букв на тему того, что все плохо, где-то не хватает каких-то ключей и т.д., ну и в общем траблы с индексом. Предлагает починить.
4. Собственно, запускаем починку опцией -r:
myisamchk -r /var/lib/mysql/database/table.MYI
Оно чо-то там себе думает и делает и говорит "я все сделала". Смотрим на файлы - ага, таймстемп поменялся, размер поменялся, внатуре чо-то сделала.
5. Помолясь, запускаем сервер обратно:
/etc/init.d/mysql start
Открываем сайт в браузере - нифига себе, он работает!!! Чудо ))