Гид по технологиям

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

7 min read Базы данных Обновлено 17 Dec 2025
Восстановление повреждённой базы данных SQL Server
Восстановление повреждённой базы данных SQL Server

Ремонт повреждённой базы данных 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: перед любыми изменениями сделайте побочную копию (битовую копию) проблемных файлов и снимок системы.

Общественные принципы восстановления

  1. Приостановите операции записи на сервер (если возможно).
  2. Сделайте физические копии файлов данных и журналов (.mdf/.ldf или каталога MySQL).
  3. Проводите операции только на копиях — не работайте с оригиналом.
  4. Документируйте каждый шаг и сохраняйте логи.
  5. Если данные персональные, учитывайте требования конфиденциальности и GDPR.

Последовательность действий: быстрый план (5 шагов)

  1. Снимите резервную копию файлов или снимок тома.
  2. Попробуйте мягкий перезапуск сервиса СУБД.
  3. Запустите встроенные средства проверки целостности.
  4. Попробуйте восстановление таблиц/файлов (CHECK/REPAIR, DBCC, экспорт через инструмент).
  5. Если встроенные средства не помогают — используйте сторонний инструмент или восстановление из резервной копии.

Вариант A: Шаги для MySQL (практическая инструкция)

Примечание: команды предполагают работу под системой Linux и корректное имя сервиса. Перед выполнением замените и

на реальные имена.

1. Сохранение копии и перезапуск сервиса

  • Сделайте копию каталога данных, обычно /var/lib/mysql, на отдельный диск.
  • Остановите службу, проверьте статус и перезапустите:
sudo systemctl stop mysql
sudo systemctl status mysql.service
sudo systemctl restart mysql.service

Иконка перезапуска MySQL

Иногда простой перезапуск решает проблему (закрывает зависшие процессы, снимает блокировки). Если это не помогает — переходите к проверке таблиц.

2. Проверка и восстановление таблицы MyISAM

  1. Войдите в MySQL или используйте утилиту mysql/mysqlcheck.
  2. Проверка таблицы через SQL:
CHECK TABLE `name_of_the_table`;
  1. Если обнаружены ошибки, выполните:
REPAIR TABLE `name_of_the_table`;

Результат REPAIR TABLE

REPAIR TABLE эффективен для таблиц MyISAM, но может привести к потере строк в процессе восстановления. Поэтому используйте копию данных.

3. Утилита mysqlcheck

  1. Перейдите в каталог данных при необходимости:
cd /var/lib/mysql

Доступ к каталогу MySQL

  1. Тест таблицы:
mysqlcheck  
  1. Для попытки ремонта:
mysqlcheck -r  

Использование mysqlcheck для восстановления

4. Изменение движка таблицы для пересборки

Иногда пересборка таблицы через ALTER приводит к восстановлению структуры:

SHOW CREATE TABLE ;
ALTER TABLE  ENGINE = MyISAM;
-- или для InnoDB:
ALTER TABLE  ENGINE = InnoDB;

Проверка CREATE TABLE и смена движка

Замените движок с осторожностью: если таблица InnoDB, смена на MyISAM потеряет транзакционность и ограничения.

Notes: Для InnoDB используйте параметры innodb_force_recovery в my.cnf только в крайнем случае и последовательно увеличивайте значение (1..6) с перезапуском сервиса. Это режим для извлечения данных, а не для нормальной работы.


Вариант B: Шаги для Microsoft SQL Server (.mdf/.ldf)

1. Проверка целостности DBCC CHECKDB

Запустите 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;

DBCC CHECKDB вернёт возможные сценарии (REPAIR_ALLOW_DATA_LOSS, REPAIR_REBUILD). Решение о применении REPAIR_ALLOW_DATA_LOSS — крайнее и может привести к потерям данных.

2. Восстановление из резервной копии

Всегда предпочтительнее восстановить базу из исправной резервной копии (полная/дифференциальная/журнал транзакций). Последовательность восстановления зависит от имеющихся бэкапов.

3. Детач/аттач и восстановление файлов

Если физические файлы .mdf доступны, можно попытаться:

  • Отключить базу (detach), переместить/копировать файлы и подключить (attach).
  • Использовать CREATE DATABASE … FOR ATTACH / FOR ATTACH_REBUILD_LOG.

4. Использование стороннего инструмента

Если встроенные средства не возвращают работоспособную базу, используйте надёжный инструмент для извлечения данных из .mdf (например, Recovery Toolbox for SQL Server). Процесс обычно включает выбор .mdf, анализ и экспорт как SQL-скрипт или прямой экспорт в сервер.

Скачивание Recovery Toolbox for SQL Server

Установка Recovery Toolbox: выбор языка и лицензионного соглашения

Запуск мастера восстановления

Выбор исходного файла MDF в мастере

Предпросмотр извлечённых данных перед экспортом

Начало восстановления и выбор экспорта данных

Recovery Toolbox for SQL Server и аналогичные решения позволяют извлечь таблицы, представления, хранимые процедуры и т.д. в виде SQL-скриптов или импортировать их напрямую на целевой сервер.


Когда встроенные инструменты не помогут (примеры ситуаций)

  • Файлы сильно повреждены физически (битые сектора) — может потребоваться восстановление на уровне диска.
  • Журнал транзакций отсутствует или повреждён так, что невозможна корректная перекомпозиция транзакций.
  • Перезапись файла (overwrite) уничтожила прежние данные — восстановление затруднено без внешней копии.

Контрпример: REPAIR_ALLOW_DATA_LOSS в DBCC допускает восстановление структуры, но может удалить строки; это оправдано лишь когда других резервных копий нет.


Методология: как выбирать стратегию восстановления (шаг за шагом)

  1. Оцените, какие файлы повреждены (.mdf/.ldf или каталоги MySQL).
  2. Сделайте немедленную физическую копию повреждённых файлов.
  3. Попробуйте «мягкие» методы (перезапуск, CHECK).
  4. Если мягкие методы не помогают — попытайтесь восстановить из резервной копии.
  5. Если резервных копий нет — используйте инструменты для извлечения данных.
  6. После извлечения — прогоните тесты целостности и восстановите повседневную работу.

Mermaid схема выбора стратегии

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

Чек-листы по ролям

DBA

  • Сделать физическую копию файлов.
  • Запустить DBCC CHECKDB / CHECK TABLE.
  • Пробный рестарт сервиса и просмотр логов.
  • Восстановление из бэкапа при наличии.
  • Если нет бэкапа — выбрать сторонний инструмент и план миграции.

Разработчик

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

Служба поддержки

  • Уведомить заинтересованные стороны и зафиксировать инцидент.
  • Подготовить журнал событий и скриншоты ошибок.
  • Помочь собрать логи и передать их DBA.

Критерии приёмки

  • База подключается и проходит минимальные запросы целостности.
  • Критические приложения получают доступ к данным.
  • Проверены ключевые бизнес-данные (пути заказов, платежи, пользователи).
  • Выполнено сравнение количества строк в основных таблицах с известными контрольными суммами (если имеются).

Безопасность и соответствие требованиям конфиденциальности

  • Если в базе находятся персональные данные, фиксируйте доступ и операции восстановления.
  • Минимизируйте количество копий данных и храните их в зашифрованном виде.
  • Убедитесь, что экспортируемые данные не попадают в общедоступные логи.

Часто встречающиеся ошибки и их интерпретация

  • “The FILE SIZE property is incorrect” — проблемы с размером файла в заголовке .mdf; часто исправляется через восстановление/инструмент.
  • “Logical consistency-based I/O error” (ошибка контрольной суммы) — указывает на повреждение данных на уровне страниц.
  • “File appears to have been truncated by the Operating System” — вероятно, нехватка места или некорректная настройка хранения.

1‑строчный глоссарий

  • DBCC CHECKDB — встроенная проверка целостности Microsoft SQL Server.
  • REPAIR TABLE — операция MySQL для восстановления MyISAM-таблиц.
  • mysqlcheck — консольная утилита для проверки и ремонта MySQL таблиц.

Тесты и критерии приёмки восстановления

  • Выполнить SELECT COUNT(*) для ключевых таблиц и сверить с ожидаемыми значениями.
  • Прогнать набор интеграционных тестов, зависящих от данных.
  • Проверить, что индексы не содержат ошибок и время выполнения основных запросов в пределах SLA.

Риски и смягчение

  • Риск потери данных при применении агрессивных команд восстановления — смягчение: работать на копиях и иметь стратегию экспорта.
  • Риск утечки данных при использовании сторонних инструментов — смягчение: использовать проверенные решения и зашифрованные каналы передачи.

Итоги

  • Всегда начинайте с резервной копии и работы с копиями файлов.
  • Для MySQL: сначала перезапустите сервис, затем CHECK/REPAIR или mysqlcheck; используйте ALTER TABLE для пересборки таблиц.
  • Для Microsoft SQL Server: используйте DBCC CHECKDB и восстановление из бэкапа; если встроенные методы не помогают — рассмотрите специализированный инструмент для .mdf-файлов.
  • Документируйте все шаги и проверяйте соответствие требованиям безопасности.

Если у вас есть конкретная ошибка или лог — прикрепите его в комментарии, и я помогу интерпретировать и предложу последовательность действий.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

USB‑ключ для BitLocker: настройка и удаление
Безопасность

USB‑ключ для BitLocker: настройка и удаление

Как снизить шум вентилятора в Windows 10
Windows

Как снизить шум вентилятора в Windows 10

Закрепить строку и столбец в Excel
Excel

Закрепить строку и столбец в Excel

Как обновить VirtualBox до 7.0 на Windows 11
Виртуализация

Как обновить VirtualBox до 7.0 на Windows 11

Защитить файлы от удаления в Windows 10
Windows 10

Защитить файлы от удаления в Windows 10

Импорт MBOX в Outlook — пошагово
Почта

Импорт MBOX в Outlook — пошагово