Rose debug info
---------------

MySQL error «Can’t create new tempfile» при восстановлении таблицы.

В логах mysql много ошибок подобного рода.
120920  9:25:28 [ERROR] /usr/sbin/mysqld: Table ’./old_sm/phones’ is marked as crashed and last (automatic?) repair failed
Поскольку автоматическое исправление не сработало, то будем исправлять вручную.
Перед любым таким действием настоятельно рекомендуется сделать резервное копирование данных.
Заходим в командную строку mysql.
Запускаем проверку таблицы.

mysql -u root -p stalker_db

mysql> check table phones;
+——————————-+—-+———+—————————————————————+
|           Table                 | Op      | Msg_type | Msg_text                                          |
+——————————-+—-+———+—————————————————————+
|             old_sm.phones | check | warning     | Table is marked as crashed and last repair failed |
|             old_sm.phones | check | error         | Found 6833 keys of 3930951                        |
|             old_sm.phones | check | error         | Corrupt                                           |
+——————————-+—-+———+—————————————————————+
3 rows in set (0.37 sec)

Запускаю восстановление таблицы.

mysql> repair table phones;
+——————————-+——+———+————————————————————-+
|           Table                 | Op        | Msg_type | Msg_text                                                 |
+——————————-+——+———+————————————————————-+
|             old_sm.phones | repair    | error        | Can’t create new tempfile: ’./old_sm/phones.TMD’ |
|             old_sm.phones | repair    | status       | Operation failed                                         |
+——————————-+——+———+————————————————————-+
2 rows in set (0.01 sec)

Т. е. при запущенном mysql-сервере восстановлению не подлежит. Останавливаю mysql
service mysql stop
Запускаю восстановление с помощью myisamchk. Данный метод будем работать с таблицами на движке MyISAM. Если у вас таблицы на движке InnoDB может помочь пересоздание таблицы с заливкой старых данных.
root@112-1:/var/lib/mysql/old_sm# myisamchk -r -f phones.MYI 
— recovering (with sort) MyISAM-table ’phones.MYI’
Data records: 3930951
— Fixing index 1
— Fixing index 2
— Fixing index 3
— Fixing index 4
— Fixing index 5

Запускаю mysql сервер
service mysql start
Ошибка пропала, что и требовалось.

Поделиться
Отправить
 335   3 мес   linux   mysql   sql   ubuntu