Битые таблицы myisam при переезде
Категория: / DEV Блог
/ PHP (LAMP)
После смены сервера возникла проблема с некоторыми таблицами myisam:
Причем ни repair через клиент mysql, ни myisamchk
не cмогли восстановить таблицу.
Ларчик открылся так:
В Mysql есть конструкция, которая кстати уже depricated...
Указываем имя таблицы, скармливаем ей путь до копии файлов таблицы (.FRM, .MYI, .MYD)
и mysql успешно восстановит испорченные данные данные.
На всякий случай после рестора
mysql> select * from ph_tags;
ERROR 1034 (HY000): Incorrect key file for table 'ph_tags'; try to repair it
Причем ни repair через клиент mysql, ни myisamchk
find /var/db/mysql -type f -name 'ph_tags.MYI' -exec myisamchk --force -o -r -v {} \;
не cмогли восстановить таблицу.
mysql> repair table ph_tags;
+------------------+--------+----------+----------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------------------------------------------------------+
| titsgtfo.ph_tags | repair | Error | Incorrect key file for table 'ph_tags'; try to repair it |
| titsgtfo.ph_tags | repair | error | Corrupt |
+------------------+--------+----------+----------------------------------------------------------+
Ларчик открылся так:
В Mysql есть конструкция, которая кстати уже depricated...
RESTORE TABLE tbl_name [, tbl_name] ... FROM '/path/to/backup/directory'
Указываем имя таблицы, скармливаем ей путь до копии файлов таблицы (.FRM, .MYI, .MYD)
и mysql успешно восстановит испорченные данные данные.
На всякий случай после рестора
mysql> repair table ph_tags;
+------------------+--------+----------+----------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------------------------------------------------------+
| titsgtfo.ph_tags | repair | ok | ok
+------------------+--------+----------+----------------------------------------------------------+