Блогът на Гонзо

Възстановяване на счупена системна таблица на MySQL

Днес имах малко премеждие с един сървър. Поради неясна причина (предполагам лош рестарт) MySQL не иска да тръгне. В лога пише следното:

Apr 28 18:56:33 localhost mysqld[5831]: 090428 18:56:33 [ERROR] /usr/sbin/mysqld: Incorrect information in file: './mysql/user.frm'
Apr 28 18:56:33 localhost mysqld[5831]: 090428 18:56:33 [ERROR] /usr/sbin/mysqld: Incorrect information in file: './mysql/user.frm'
Apr 28 18:56:33 localhost mysqld[5831]: 090428 18:56:33 [ERROR] Fatal error: Can't open and lock privilege tables: Incorrect information in file: './mysql/user.frm'

Изглежда доста апокалиптично, нали? Тъй като не намерих конкретно предписание за спасяване на положението, импровизирах, като използвах информацията в документацията на MySQL и решението на проблема, което е описал Eric Gumtow във форума на mysql. Работата е там, че решението на Ерик изисква да създам наново потребителите, а мен ме мързеше да го направя. И така:

# cd /var/lib/mysql/mysql
# mv user.* /root/
# mysql_install_db
# cp /root/user.MYI ./
# cp /root/user.MYD ./
# myisamchk -r user.MYI
# /etc/init.d/mysql start

Voila! Какво напарвих ли? Първо копирах вайловете на таблицата user (счупената таблица) на друго място, след това чрез скрипта mysql_install_db създадох наново таблицата, после копирах обратно файловете с данните и поправих таблицата чрез myisamchk.

Етикети: , , , ,

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *