Назад | Перейти на главную страницу

Не удается восстановить таблицу Mysql

У меня есть ARCHIVE таблицу, которую я просто не могу восстановить, я уже пытаюсь удалить разбиение, но все равно получаю эту ошибку:

alter table promo_tool_view_44 REMOVE PARTITIONING;
ERROR 1034 (HY000): Incorrect key file for table 'promo_tool_view_44'; try to repair it

Я уже пытаюсь отремонтировать стол, но получаю ответ: отремонтировать таблицу Promo_tool_view_1;

+-----------------------------+--------+----------+-----------------------------+
| Table                       | Op     | Msg_type | Msg_text                    |
+-----------------------------+--------+----------+-----------------------------+
| vad_stats.promo_tool_view_1 | repair | error    | Partition p1 returned error |
| vad_stats.promo_tool_view_1 | repair | error    | Corrupt                     |
+-----------------------------+--------+----------+-----------------------------+

2 rows in set (0.21 sec)

Как я могу это решить?

Спасибо,
Педро

Если вы еще этого не сделали: выключите БД и создайте резервную копию. Ремонтные операции опасны.

К сожалению, я настоятельно рекомендую использовать резервную ленту. Что-то явно не работает в разделе p1. Но есть некоторые уловки, которые могут вернуть ваши данные.

myisamchk реализует множество вещей, которых нет в cli. Пытаться

myisamchk --safe-recover
myisamchk --recover

в таком порядке и посмотрите, повезет ли вам еще. Есть много флагов, которые могут вам помочь. Полную документацию можно найти на

http://dev.mysql.com/doc/refman/5.5/en/myisamchk.html

Полную документацию по ремонту в кли можно найти на http://dev.mysql.com/doc/refman/5.5/en/repair-table.html

После того, как вы закончите восстановление, вы должны сначала выяснить, почему у вас была повреждена БД. Это не нормально для баз данных MySQL.

Для таблиц ARCHIVE единственный способ, который я нашел, - это перезапись файлов таблиц с одного из подчиненных серверов. Но, пожалуйста, ребята, если кто-нибудь, как одно из решений для этого, пожалуйста, помогите нам, чтобы предотвратить будущие бедствия