#Как проявляется проблема и где искать причину
После восстановления SQL-дампа часть таблиц может отсутствовать из-за неполного экспорта, прерванного импорта, фильтров дампа или ошибок создания объектов. Без исходного журнала нельзя считать операцию успешной по одному коду завершения приложения.
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Дамп неполонЭкспорт был ограничен несколькими таблицами или базами | В файле нет CREATE TABLE нужного объекта | Повторить экспорт с верными параметрами |
| Импорт прерванВ логе обнаружен ERROR и запись остановилась | Часть таблиц создана до ошибочного SQL | Проверить причину и повторить на чистом тесте |
#Пошаговая диагностика и устранение
- 1. Составьте перечень ожидаемых таблицНа исходной базе, если она доступна, выполните SHOW FULL TABLES для нужной схемы. Отдельно отметьте представления: SHOW FULL TABLES показывает и таблицы, и VIEW. Сохраните количество и названия.SQLКомандаВ mysql-клиенте, замените appdb.
SHOW FULL TABLES FROM appdb;
- 2. Сравните с восстановленной базойНа тестовой целевой базе выполните ту же команду. Если отсутствуют только VIEW, проверьте DEFINER и зависимости; если физические таблицы, переходите к содержимому дампа.
- Запуск на целевой копии; сравните списки, не только количествоSQLКомандаЗапуск на целевой копии; сравните списки, не только количество.
SHOW FULL TABLES FROM appdb;
- 3. Проверьте размер, дату и контрольную сумму дампаНа Linux-хосте найдите исходный файл и проверьте, не оказался ли он усечён. По возможности сравните SHA-256 с контрольной суммой, полученной при передаче файла.
- Linux; замените backup.sqlLinux · Терминал (Bash)КомандаLinux; замените backup.sql. Команда читает файл, не раскрывайте дамп публично.
sha256sum backup.sql
- 4. Найдите определения пропавших таблицЕсли дамп обычный SQL (не сжат), найдите в нём соответствующие CREATE TABLE. Отсутствие определения может означать фильтр экспорта или повреждённый файл. Для больших архивов сначала распакуйте копию в безопасном каталоге.
- Linux/macOS; показываются фрагменты SQL, возможно с чувствительными именамиLinux · Терминал (Bash)КомандаLinux/macOS; показываются фрагменты SQL, возможно с чувствительными именами.
grep -n -m 10 "CREATE TABLE" backup.sql
- 5. Проверьте журнал импорта и первое падениеНайдите первую ошибку вида ERROR 1044/1064/1071/1153 и сопоставьте с SQL-строкой. Если импорт ранее выполняли без сохранения stderr, повторяйте только в новой пустой тестовой схеме, вывод направляйте в ограниченный по доступу файл.
- 6. Оцените настройки исходного экспортаУбедитесь, что дамп создавался для нужной базы и не исключал таблицы. При восстановлении процедур и событий отдельно оцените параметры --routines и --events; триггеры обычно включены по умолчанию, но права могут ограничивать экспорт.
- 7. Повторите восстановление исключительно в тестеСоздайте отдельную пустую тестовую схему с согласованными правами, выполните импорт строго по документированному процессу организации, запишите код завершения и ошибки. Не используйте --force и не отключайте проверку внешних ключей без планирования.
- 8. Сравните структуру и контрольные данныеПовторите SHOW FULL TABLES, посмотрите несколько известных записей и число строк по контрольным таблицам; для критичной базы сравните проверки целостности и ключевые связи. Только после успешного теста составляйте план рабочего восстановления.
#Как проверить результат
Все ожидаемые таблицы, представления и необходимые объекты существуют в восстановленной тестовой базе; журнал импорта без ошибок, контрольные записи совпадают.
#Если исправление не помогло
Если дамп оказался неполным и исходный сервер недоступен, не создавайте пустые таблицы с прежними именами вместо пропавших данных; ищите другие проверенные резервные копии.