Восстановление базы данных MYSQL занимает очень много времени

#mysql #myisam

#mysql #myisam

Вопрос:

У меня есть таблица MYSQL MYISAM размером примерно 7 ГБ и имеет довольно много индексов. Вчера таблица была повреждена, и теперь у меня работает восстановление MYSQL более 12 часов.

Я хотел бы знать, сколько времени на самом деле занимает восстановление MYSQL для такой таблицы? (На данный момент я не могу точно определить количество строк и точный размер из-за выполнения ремонта).

Переменные, которые я использовал :

 | myisam_max_sort_file_size | 9223372036853727232  |
| myisam_mmap_size          | 18446744073709551615 |
| myisam_recover_options    | FORCE                |
| myisam_repair_threads     | 1                    |
| myisam_sort_buffer_size   | 268435456
| read_buffer_size     | 67108864 |
| read_only            | OFF      |
| read_rnd_buffer_size | 4194304
  

Я не смог изменить ни одну из глобальных переменных из-за использования управляемого хостинга GODADDY.

Восстановление всегда было «восстановлением путем сортировки», как видно из состояния. Есть ли какой-либо другой способ ускорить этот процесс восстановления??

Спасибо

Редактировать: использование моей памяти и процессора видно на изображении ниже введите описание изображения здесь

Я также пытался восстановить базу данных из резервной копии 2-дневной давности (в новую базу данных), она также застряла на «Восстановление с помощью keycache» в той же таблице в течение последних 5 часов.

Я пробовал mysqlcheck и REPAIR TABLE, а не myisamchk, поскольку я не могу получить доступ к определенной папке базы данных в /var / lib/ mysql, которая выдает ошибку «Отказано в разрешении». А также пустая команда myisamchk выдает команду not found .

Ответ №1:

Это должно занять несколько минут. Если оно не завершилось через 12 часов, оно, вероятно, зависло и никогда не завершится.

MyISAM на самом деле не поддерживался более десяти лет, и вполне вероятно, что вы столкнулись с ошибкой. У вас может быть больше шансов, myisamchk если вы сможете получить доступ к необработанным файлам базы данных.

Комментарии:

1. Есть ли способ ускорить это, или я что-то делаю неправильно?? Я могу войти в /var/lib/mysql, но доступ к /var/lib/mysql/$DATABASE_NAME дает отказ в разрешении Редактировать: также запуск myisamchk на сервере выдает команду not found

2. В какой форме это «резервная копия 2-дневной давности»? Это mysqldump? Снимок? Можете ли вы получить исходное содержимое на свой локальный компьютер? Возможно, вам повезет больше с восстановлением таблицы локально.

3. Это дамп SQL. Проблема в том, что я хочу заменить только эту конкретную таблицу, что может быть сложно. Во-вторых, резервная копия была сделана до того, как MySQL был поврежден, поэтому я сомневаюсь, что резервная копия повреждена?

4. Попытка резервного копирования базы данных теперь просто выдает ошибку о повреждении таблицы.

5. Правильно, поэтому восстановите резервную копию на своем локальном компьютере, сбросьте только эту одну таблицу и восстановите дамп этой таблицы на рабочем сервере.