Как восстановить повреждённую базу данных в SQL Server и MySQL

О чём эта статья
Эта инструкция объясняет, почему базы данных на SQL Server и MySQL могут повреждаться и даёт практический план действий по восстановлению. Статья покрывает как системные приёмы для MySQL (service, mysqlcheck, ALTER TABLE), так и варианты для Microsoft SQL Server (.mdf/.ldf) — включая использование Recovery Toolbox for SQL Server для извлечения данных из повреждённых MDF-файлов. В конце — чек-листы для ролей, методология восстановления, схема принятия решения и советы по безопасности и соответствию требованиям конфиденциальности.
Кому это полезно
- Системным администраторам и DBA
- Разработчикам, поддерживающим БД
- Службам техподдержки и инженерам по восстановлению данных
Ключевые варианты запроса (SEO-интенции)
- Восстановление повреждённой базы данных SQL Server
- Как починить MDF файл
- Восстановление MySQL таблицы
- Инструменты для восстановления SQL Server
Понимание: Microsoft SQL Server и MySQL — в чём разница
- Microsoft SQL Server — коммерческая СУБД от Microsoft, использует файлы данных .mdf/.ndf и журналы .ldf. Для проверки целостности используются DBCC-команды.
- MySQL — популярная открытая СУБД. Внутренние механизмы хранения (MyISAM, InnoDB) определяют методы восстановления: CHECK TABLE/REPAIR TABLE для MyISAM, утилиты и InnoDB recovery-параметры для InnoDB.
Краткое определение терминов
- MDF — основной файл данных Microsoft SQL Server.
- LDF — файл журнала транзакций Microsoft SQL Server.
- MyISAM / InnoDB — движки хранения MySQL.
Почему база данных может быть повреждена
Наиболее частые причины повреждений:
- Ошибочное перезапись или удаление файлов данных.
- Сбой оборудования (повреждение дисков, контроллеров, RAID-массивов).
- Неправильные настройки или некорректное завершение работы СУБД.
- Инфекции вредоносным ПО или последствия неудачной антивирусной чистки.
- Внутренние ошибки СУБД или баги при обновлении/миграции.
- Коррупция из-за сетевых сбоев при удалённом хранении файлов.
Important: перед любыми изменениями сделайте побочную копию (битовую копию) проблемных файлов и снимок системы.
Общественные принципы восстановления
- Приостановите операции записи на сервер (если возможно).
- Сделайте физические копии файлов данных и журналов (.mdf/.ldf или каталога MySQL).
- Проводите операции только на копиях — не работайте с оригиналом.
- Документируйте каждый шаг и сохраняйте логи.
- Если данные персональные, учитывайте требования конфиденциальности и GDPR.
Последовательность действий: быстрый план (5 шагов)
- Снимите резервную копию файлов или снимок тома.
- Попробуйте мягкий перезапуск сервиса СУБД.
- Запустите встроенные средства проверки целостности.
- Попробуйте восстановление таблиц/файлов (CHECK/REPAIR, DBCC, экспорт через инструмент).
- Если встроенные средства не помогают — используйте сторонний инструмент или восстановление из резервной копии.
Вариант A: Шаги для MySQL (практическая инструкция)
Примечание: команды предполагают работу под системой Linux и корректное имя сервиса. Перед выполнением замените Иногда простой перезапуск решает проблему (закрывает зависшие процессы, снимает блокировки). Если это не помогает — переходите к проверке таблиц. REPAIR TABLE эффективен для таблиц MyISAM, но может привести к потере строк в процессе восстановления. Поэтому используйте копию данных. Иногда пересборка таблицы через ALTER приводит к восстановлению структуры: Замените движок с осторожностью: если таблица InnoDB, смена на MyISAM потеряет транзакционность и ограничения. Notes: Для InnoDB используйте параметры innodb_force_recovery в my.cnf только в крайнем случае и последовательно увеличивайте значение (1..6) с перезапуском сервиса. Это режим для извлечения данных, а не для нормальной работы. Запустите DBCC CHECKDB, чтобы получить рекомендации по восстановлению: DBCC CHECKDB вернёт возможные сценарии (REPAIR_ALLOW_DATA_LOSS, REPAIR_REBUILD). Решение о применении REPAIR_ALLOW_DATA_LOSS — крайнее и может привести к потерям данных. Всегда предпочтительнее восстановить базу из исправной резервной копии (полная/дифференциальная/журнал транзакций). Последовательность восстановления зависит от имеющихся бэкапов. Если физические файлы .mdf доступны, можно попытаться: Если встроенные средства не возвращают работоспособную базу, используйте надёжный инструмент для извлечения данных из .mdf (например, Recovery Toolbox for SQL Server). Процесс обычно включает выбор .mdf, анализ и экспорт как SQL-скрипт или прямой экспорт в сервер. Recovery Toolbox for SQL Server и аналогичные решения позволяют извлечь таблицы, представления, хранимые процедуры и т.д. в виде SQL-скриптов или импортировать их напрямую на целевой сервер. Контрпример: REPAIR_ALLOW_DATA_LOSS в DBCC допускает восстановление структуры, но может удалить строки; это оправдано лишь когда других резервных копий нет. Mermaid схема выбора стратегии DBA Разработчик Служба поддержки Если у вас есть конкретная ошибка или лог — прикрепите его в комментарии, и я помогу интерпретировать и предложу последовательность действий. на реальные имена.
1. Сохранение копии и перезапуск сервиса
sudo systemctl stop mysql
sudo systemctl status mysql.service
sudo systemctl restart mysql.service
2. Проверка и восстановление таблицы MyISAM
mysql/mysqlcheck.CHECK TABLE `name_of_the_table`;REPAIR TABLE `name_of_the_table`;
3. Утилита mysqlcheck
cd /var/lib/mysql
mysqlcheck mysqlcheck -r 
4. Изменение движка таблицы для пересборки
SHOW CREATE TABLE 
Вариант B: Шаги для Microsoft SQL Server (.mdf/.ldf)
1. Проверка целостности DBCC CHECKDB
USE master;
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB ('YourDatabase') WITH NO_INFOMSGS, ALL_ERRORMSGS;
ALTER DATABASE YourDatabase SET MULTI_USER;2. Восстановление из резервной копии
3. Детач/аттач и восстановление файлов
4. Использование стороннего инструмента






Когда встроенные инструменты не помогут (примеры ситуаций)
Методология: как выбирать стратегию восстановления (шаг за шагом)
flowchart TD
A[Обнаружена ошибка] --> B{Имеется свежая резервная копия?}
B -- Да --> C[Восстановить из бэкапа]
B -- Нет --> D[Сделать физическую копию файлов]
D --> E[Перезапустить сервис]
E --> F{Нормализовалось?}
F -- Да --> G[Мониторинг и аудит]
F -- Нет --> H[Запустить CHECK/DBCC]
H --> I{Ошибки исправимы?}
I -- Да --> J[Применить ремонт]
I -- Нет --> K[Использовать сторонний инструмент]
K --> L[Экспорт в новую БД]
L --> GЧек-листы по ролям
Критерии приёмки
Безопасность и соответствие требованиям конфиденциальности
Часто встречающиеся ошибки и их интерпретация
1‑строчный глоссарий
Тесты и критерии приёмки восстановления
Риски и смягчение
Итоги
Похожие материалы