MySQL:Table is marked as crashed and should be repaired

Автор: | 27/03/2014
 

mysqllogoПерестал работать блог, при этом в логе появились ошибки:

[Thu Mar 27 18:26:11 2014] [warn] [client 85.91.123.15] mod_fcgid: stderr: … Table ‘./rtfm_db1/db1_options’ is marked as crashed and should be repaired

Проверяем тип используемых таблиц:

mysql> SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'rtfm_db1';
+------------------------+--------+
| TABLE_NAME             | ENGINE |
+------------------------+--------+
| db1_cntctfrm_field     | InnoDB |
| db1_commentmeta        | MyISAM |
| db1_comments           | MyISAM |
| db1_links              | MyISAM |
| db1_madsape            | MyISAM |
| db1_options            | MyISAM |
| db1_pollsa             | MyISAM |
| db1_pollsip            | MyISAM |
| db1_pollsq             | MyISAM |
| db1_postmeta           | MyISAM |
| db1_posts              | MyISAM |
| db1_term_relationships | MyISAM |
| db1_term_taxonomy      | MyISAM |
| db1_terms              | MyISAM |
| db1_userfile_category  | MyISAM |
| db1_userfile_cats      | MyISAM |
| db1_userfile_icons     | MyISAM |
| db1_usermeta           | MyISAM |
| db1_users              | MyISAM |
| db1_wp_rp_tags         | InnoDB |
+------------------------+--------+
20 rows in set (0.02 sec)

Находим файлы с расширением .MYI (MySQL Index MyISAM File), которые используются сервером MySQL для хранения индексов для таблицы MyISAM:

# ls -l /var/db/mysql/rtfm_db1/ | grep "MYI"
-rw-rw----  1 mysql  mysql     22528 Mar 27 18:26 db1_commentmeta.MYI
-rw-rw----  1 mysql  mysql     21504 Mar 27 18:26 db1_comments.MYI
-rw-rw----  1 mysql  mysql      3072 Mar 27 18:26 db1_links.MYI
-rw-rw----  1 mysql  mysql      2048 Jan 30 21:07 db1_madsape.MYI
-rw-rw----  1 mysql  mysql     29696 Mar 27 19:03 db1_options.MYI
-rw-rw----  1 mysql  mysql      2048 Mar 27 12:04 db1_pollsa.MYI
-rw-rw----  1 mysql  mysql     46080 Mar 27 18:38 db1_pollsip.MYI
-rw-rw----  1 mysql  mysql      2048 Mar 27 12:04 db1_pollsq.MYI
-rw-rw----  1 mysql  mysql    221184 Mar 27 19:03 db1_postmeta.MYI
-rw-rw----  1 mysql  mysql    329728 Mar 27 19:03 db1_posts.MYI
-rw-rw----  1 mysql  mysql     92160 Mar 27 19:03 db1_term_relationships.MYI
-rw-rw----  1 mysql  mysql     15360 Mar 27 18:26 db1_term_taxonomy.MYI
-rw-rw----  1 mysql  mysql     28672 Mar 27 18:26 db1_terms.MYI
-rw-rw----  1 mysql  mysql      3072 Jan 30 22:35 db1_userfile_category.MYI
-rw-rw----  1 mysql  mysql      1024 Jan 30 22:35 db1_userfile_cats.MYI
-rw-rw----  1 mysql  mysql      3072 Jan 30 22:35 db1_userfile_icons.MYI
-rw-rw----  1 mysql  mysql     10240 Mar 27 19:02 db1_usermeta.MYI
-rw-rw----  1 mysql  mysql      4096 Mar 27 18:26 db1_users.MYI

Останавливаем сервер:

# service mysql-server stop
Stopping mysql.
Waiting for PIDS: 23207.

Запускаем утилиту myisamchk с опцией -c для вывода только “проблемных” файлов:

# myisamchk -s /var/db/mysql/rtfm_db1/*.MYI
Warning: Using unique option prefix read_buffer instead of read_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
Warning: Using unique option prefix write_buffer instead of write_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
myisamchk: warning: 1 client is using or hasn't closed the table properly
MyISAM-table '/var/db/mysql/rtfm_db1/db1_options.MYI' is usable but should be fixed
myisamchk: warning: 6 clients are using or haven't closed the table properly
MyISAM-table '/var/db/mysql/rtfm_db1/db1_pollsip.MYI' is usable but should be fixed
myisamchk: warning: 1 client is using or hasn't closed the table properly
MyISAM-table '/var/db/mysql/rtfm_db1/db1_postmeta.MYI' is usable but should be fixed

И запускаем восстановление:

# myisamchk -r /var/db/mysql/rtfm_db1/db1_options.MYI
Warning: Using unique option prefix read_buffer instead of read_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
Warning: Using unique option prefix write_buffer instead of write_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
- recovering (with sort) MyISAM-table '/var/db/mysql/rtfm_db1/db1_options.MYI'
Data records: 571
- Fixing index 1
- Fixing index 2

По очереди для всех “проблемных” файлов.

После выполнения – првоеряем ещё раз, что бы убедиться что ошибок нет.

Теперь можно запустить сервер:

# service mysql-server start
Starting mysql.
# service mysql-server status
mysql is running as pid 23582.

Готово.

P.S. И не забываем делать бекапы, само собой.

Ссылки по теме

http://shebangme.blogspot.com
http://www.mysql.ru