Существует ли возможность восстановить дамп базы данных?

Здравствуйте! Недавно у нас возникла ситуация с панелью ispmanager: доступ к FTP пользователя admin, похоже, был взломан. Мы обнаружили незнакомые папки и файлы во всех доменах. В результате было принято решение восстановить все из резервной копии. Мы это сделали, но вскоре чужие файлы снова начали появляться. В связи с этим мы решили удалить пользователя и восстановить его данные из бэкапа под новым именем и с новым паролем. Восстановление прошло успешно, однако выяснилось, что одна база данных отсутствовала в резервной копии. Судя по всему, она не создавалась из-за ошибки, описанной в поддержке isp: “Ошибка Unknown column ‘generation_expression’ in ‘field list’ указывает на несоответствие версии клиента mysqldump и версии сервера MySQL. Колонка generation_expression появилась в более поздних версиях MySQL, начиная с 5.7, но клиент пытается запросить её на сервере более старой версии (например, 5.6).” Таким образом, мы остались без нужной базы данных, и на компьютере есть старая, но неполная версия по структуре и данным. У меня возник вопрос: могло ли остаться что-то на сервере, например, от попыток создания резервных копий, или при переносе пользователя с другого удаленного сервера с панелью isp? Может быть, существуют файлы, содержащие следы данных? Мы обнаружили, что в папке /var/lib/mysql-5.5 (на этом сервере MySQL была поставлена база данных) осталась только папка с именем БД и файл db.opt, и больше ничего. Не могли бы вы подсказать, могли ли еще где-то остаться "следы" базы данных?
  • 10 января 2025 г. 15:04
Ответы на вопрос 3
Здравствуйте!

Восстановление базы данных, особенно в случае её частичной утраты, может быть сложной задачей, но давайте рассмотрим ваши вопросы.

1. **Остались ли следы базы данных?**
   - Если вы оставили папку с именем базы данных в `/var/lib/mysql-5.5`, но в ней нет файлов `.frm`, `.ibd` или других файлов данных, то, скорее всего, данные были потеряны при удалении или сбое. Однако стоит проверить, нет ли других каталожных структур или резервных копий:
     - Проверьте, есть ли в `/var/lib/mysql/` старые файлы или резервные копии, которые могут не быть частью текущей базы данных.
     - Убедитесь, что другие пользователи на сервере (если такие есть) не создали резервные копии или журналы транзакций, которые могут быть полезны.

2. **Проверка на наличие журналов транзакций:**
   - Если у вас была включена репликация или ведение логов транзакций (binlog), возможно, информация о транзакциях осталась в бинарных логах. Используйте утилиты для работы с MySQL, чтобы проанализировать их. 
   - Включение `innodb_file_per_table` также подразумевает, что данные в таблицах хранятся в отдельных файлах, поэтому проверьте наличие файлов `.ibd`.

3. **Поиск в системных таблицах MySQL:**
   - Вы можете попробовать исследовать системные таблицы MySQL (например, `information_schema.tables`), чтобы узнать, есть ли записи о недостающей базе данных. Это может помочь в понимании, какие таблицы и данные могли существовать ранее.

4. **Восстановление из старой версии:**
   - Если у вас есть старая версия базы данных на вашем компьютере, попробуйте сравнить её с тем, что было на сервере. Если в старой версии есть хотя бы структуру таблиц и небольшие объемы данных, вы можете попытаться восстановить необходимые части информации.

5. **Профилактика:**
   - В будущем, убедитесь, что у вас настроены регулярные резервные копии базы данных, которые включают экспорта `mysqldump` или другой формат. Использование инструментов для интеграции с системой мониторинга поможет отслеживать изменения в файлах и папках.

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

Желаю удачи в восстановлении данных!
а большие ibdata1 и т.п. в /var/lib/mysql-5.5  остались? 
Пустая директория с именем базы говорит о точ, что был innodb без включенной innodb_per_file.
А нельзя создать ещё одну подобную виртуалку, но без доступа в интернет? 
И восстановить БД из резервной копии туда?
Есть мнение, что без интернета злоумышленник ничего взломать не сможет.
Похожие вопросы