Pull to refresh

Горький опыт, резервное копирование и качественная техподдержка

Reading time3 min
Views23K
imageОписанное ниже, наверняка, происходило со многими. Тем не менее, подобные ситуации почти ничему не учат тех, с кем это не происходило. Речь пойдет о резервном копировании. Попутно разбавим законами Мерфи и не только.

Началось все с того, что нужен был быстрый бэкап MySQL по расписанию, а именно каждый день. Так как это нужно было сделать сегодня на вчера был выбран уже установленный софт — Handy Backup. Быстренько сделав задачу на бэкап и настроив уведомления я забыл об этом на полгода.
Это было моей первой ошибкой, потому что

«Когда дела идут хорошо, что-то должно случиться в самом ближайшем будущем».

Файлы базы, которую я бэкапил хранились в «неубиваемом» хранилище производства HP. Мои бэкапы складывались туда же и переодически сохранялись еще и на ленту. Казалось бы, все надежно. Но ведь все забыли, что еще один закон действует безотказно

«Из всех неприятностей произойдет именно та, ущерб от которой больше».

И вот хваленое хранилище производства HP в одночасье рухнуло, похоронив под обломками несчастную базенку, а заодно и все мои бэкапы. Потратив два дня только на то, чтобы узнать, что HP не намеряна восстанавливать хранилище в ближайшее время (возможно, никто просто не знает как восстановить то, что нельзя убить), было принято решение поднять последний бэкап с ленты. Оказалось, он был сделан буквально вчера. Казалось, можно вздохнуть с облегчением, но

«Если вам кажется, что ситуация улучшается, значит вы чего-то не заметили».

И правда, заглянув в файлы бэкапа я обнаружил, что там полно вопросиков! Чорт! Ну конечно база была в юникоде, про другие кодировки уже наверно и не знает никто. Мало того Handy Backup как-то кодирует бэкапы и там нет простого SQL.
Выругав себя за то, что не проверил такую простую вещь раньше, я подумал: «Хер с ним, восстановлю как есть, напишу скрипт который обновит вопросики данными из другой таблицы, где все было в закодированном виде», но черт бы побрал эти законы

«Если какая-нибудь неприятность может произойти, она случится».

Оказалось, что Handy Backup при восстановлении полностью заменял структуру таблиц, напрочь игнорируя типы полей, ключи и все остальное. Если таблица уже существовала, он ее удалял и создавал свою. В итоге я получил таблицы где были только int и varchar(255) поля. Надо ли объяснять, что все что было длиннее 255 символов просто обрезалось.
Перепробовав все версии Handy Backup и возможные настройки ODBC я был на грани отчаянья. Была ночь и я, без надежды на успех, написал в аську супорту Novosoft, который делает Handy Backup. Ответа не последовало. Меня это не удивило, я имел дело с разными компаниями и неотзывчивая техподдержка была обычным делом. Предчувствуя как мою *опу завтра будут рвать на британский флаг, я пошел спать.

«Всякая работа требует больше времени, чем вы думаете».

На утро, попробовав еще пару вариантов, я решил написать в аську Novosoft еще раз. Ответ пришел мгновенно! Отвечавший даже не поленился пробиться через антибот. А после того, как он извинился, что не смог ответить вчера, я поначалу засомневался, что уже не сплю. Выслушав рассказ о моей беде, он пообещал разобраться в проблеме. Спустя некоторое время мне был брошен спасательный круг в виде обновленной DLL, которая не должна трогать структуру таблиц. Еще раз хочу поблагодарить всех сотрудников компании Novosoft, которые, несмотря на позднее время, помогали решить мою проблему.

«Все не так легко, как кажется».

Получив новую инъекцию адреналина от возможности восстановить базу, я заменил dll и… ничего. Совсем ничего не изменилось. Лихорадочно пробуя разные варианты запуска програмы, я начал понимать, что не продвинулся за сутки ни на шаг. Мозг требовал сна, совесть — решения проблемы. И решение пришло. Пришло последним, как всегда приходят правильные решения. Я включил логирование запросов MySQL и, прогнав полное восстановление через Handy Backup, собрал 3 гигабайта запросов на вставку данных.
Через час база была восстановлена.

Осталось исправить вопросики, но это уже совсем другая история.

«Есть моменты, когда все удается. Не ужасайтесь, это пройдет».

Надеюсь, мой опыт поможет кому-то не попасть в похожую переделку. Проверьте свои бэкапы. Проверьте программы, которые их делают. Проверьте хранилища, где хранятся бэкапы.

P.S. Напишите в коментах, какие средства вы используете для резервного копирования?
Tags:
Hubs:
+57
Comments74

Articles

Change theme settings