#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. Правильно, поэтому восстановите резервную копию на своем локальном компьютере, сбросьте только эту одну таблицу и восстановите дамп этой таблицы на рабочем сервере.