Все базы данных MySQL потеряны за одну ночь

15

После звонка от клиента, чтобы сказать, что его веб-сайт не работает, я обнаружил, что MySQL на нашем сервере RackSpace Cloud Windows 2008 не работал. Я перезапустил MySQL, но получил ошибку «Доступ запрещен пользователю» в браузере для всех сайтов с базой данных MySQL. Когда я смотрю в MySql Server 5.5 / data, нет никаких папок, кроме mysql и performance_schema. Похоже, все базы данных и данные были стерты. Кто-нибудь знает, что могло произойти и куда делись данные? Кроме того, я обнаружил, что этот сервер отсутствует в нашей службе резервного копирования.

ps, кажется, после обновления Windows в 4:01 сегодня утром.

Iain
источник
Есть ли в вашей системе соответствующие записи и журналы MySQL?
user9517
1
«В довершение всего, я только что обнаружил, что этот сервер отсутствует в нашей службе резервного копирования». Уч.
Том О'Коннор
файл журнала начинается в 09:00 этим утром, когда я запустил MySQL: InnoDB: файл журнала. \ ib_logfile0 не существует: новый файл будет создан InnoDB: задан размер файла журнала. \ ib_logfile0 размером до 5 МБ InnoDB: база данных физически записывает файл как полный : подождите ...
Иан
1
Это больше, чем в прошлом, но, возможно, вы могли бы попробовать некоторые программы для восстановления данных. Вы должны выключить сервер как можно скорее и получить доступ к дискам в автономном режиме.
Дэн
7
Вы уверены, что ищете правильный каталог? Можно было изменить datadirфайлы конфигурации без перезагрузки MySQL, и тогда эта проблема появляется только после перезапуска MySQL (возможно, вызванного обновлением системы).
gertvdijk

Ответы:

32
  1. Обратитесь в службу поддержки Rackspace. Вот для чего они здесь.
  2. Делай все, что они предлагают.
  3. Если это не сработает, попробуйте предложение Дэна о программном обеспечении для восстановления данных.
  4. Используйте это как возможность для роста и обучения.

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

Да, и отключите автоматические обновления. Делайте это только после того, как вы протестировали влияние обновления, предпочтительно на другой сервер с одинаковой конфигурацией.

Том О'Коннор
источник
6
+1 Это действительно должен быть канонический ответ на вопросы о том, как восстановить данные, которые не были зарезервированы.
dunxd
2
Спасибо за помощь, ребята. gertvdijk поставил меня в правильные строки, поскольку нашел папки с данными также в Program Files / MySQL, а также в ProgramData / MySQL и восстановил их из комбинации папок данных и файла ibdata1 после переустановки MySQL. Что касается первоначальной проблемы, которая вызвала повреждение и помешала запуску MySQL, единственная подсказка, которую я имею, - это обновление Windows в 4 часа утра, но я не могу сказать, что это точно. Выделил этот сервер исключен из программы резервного копирования, и это будет тот, с проблемой, не так ли.
Iain
1
Вам следует рассмотреть возможность изменения настроек сервера таким образом, чтобы системные обновления не устанавливались автоматически и оставались без присмотра, если вы не контролируете каким-либо другим способом, какие именно обновления установлены. Что, если обновление изменяет поведение системы таким образом, чтобы нарушить работу сайтов ваших клиентов?
CVN
5
Это граничит с пламенной приманкой, но рассмотрите возможность перемещения ваших баз данных mysql на сервер linux. Их автоматические обновления безопасности никогда не перезагружают сервер, и каждый крупный поставщик дистрибутивов будет проверять совместимость обновлений с основной программой, такой как mysql (С другой стороны, ни Microsoft, ни Oracle не будут проверять mysql на наличие обновлений Windows). Cronjob резервного копирования, вероятно, немного проще и надежнее, чем большинство программ резервного копирования Windows.
Брайан Уотерс