Надёжность

Как правильно делать резервные копии сайта и базы данных

Копии есть почти у всех. Работают ли они — выясняется в тот день, когда что-то уже потеряно, и это худший момент для первой проверки.

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

Задача — сделать так, чтобы этот день прошёл скучно.

Что именно копировать

Сайт состоит из нескольких частей, и потерять можно любую по отдельности.

Файлы. Код, шаблоны, загруженные картинки и документы. Меняются редко, занимают много.

База данных. Содержимое: страницы, товары, заказы, клиенты, настройки. Меняется постоянно, занимает мало.

Настройки сервера. Конфигурация веб-сервера, правила переадресации, сертификаты, задачи по расписанию. Про них забывают, а восстанавливать по памяти долго.

Почта, если ящики на домене обслуживаются Вашим же сервером.

Копия только файлов бесполезна для сайта с базой: восстановите оболочку без содержимого. Копия только базы — наоборот. Нужны обе, и желательно снятые в один момент: иначе в базе окажутся ссылки на картинки, которых в файлах ещё нет.

Правило 3-2-1

Общая практика хранения копий укладывается в три числа — их обычно так и записывают:

3 копии данных
2 разных носителя или площадки
1 копия — вне основной площадки

На практике для сайта это означает:

  • рабочие данные на сервере;
  • копия у провайдера — быстрая, для мелких аварий;
  • копия у Вас или в другом месте — на случай, когда проблема с самой площадкой.

Третий пункт обычно и пропускают. Снимок виртуальной машины лежит в той же инфраструктуре, что и сама машина: от сбоя внутри сервера он спасает, от блокировки учётной записи или аварии у площадки — нет.

Как часто

Частоту задаёт один вопрос: сколько данных Вы готовы потерять?

Что за проектРазумная частота
Сайт-визитка, меняется раз в месяцраз в неделю
Корпоративный сайт с новостямиежедневно база, еженедельно файлы
Магазин или сервис с заявкамибаза несколько раз в день
Сервис, где потеря заказа критичнабаза непрерывно, плюс ежедневный снимок

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

Сколько хранить

Одной последней копии мало: не все аварии заметны сразу. Сайт могли взломать неделю назад, а обнаружить это сегодня — и единственная копия окажется уже заражённой.

Обычная глубина хранения:

  • ежедневные копии за последние 7 дней;
  • еженедельные за последние 4 недели;
  • ежемесячные за последние 3–6 месяцев.

Места это занимает немного: выгрузка базы — обычный текст, он сжимается хорошо.

Проверка восстановления

Если из всего написанного делать что-то одно — делайте это.

Копия, из которой ни разу не восстанавливались, — это ещё не копия. Причины скучные: выгрузка оборвалась на середине, кодировка не та, версия базы на новом сервере другая, архив побился при передаче, копировалась не та папка.

Узнать об этом в момент аварии — худший вариант.

Проверка выглядит так:

  1. Возьмите копию, как будто основного сервера нет.
  2. Разверните её в отдельном месте — на тестовом сервере или локально.
  3. Откройте сайт и убедитесь, что он работает и данные на месте.
  4. Запишите, сколько времени это заняло.

Четвёртый пункт даёт цифру, которой обычно нет ни у кого: сколько на самом деле занимает возврат сайта в строй. Для визитки полдня простоя терпимо, для магазина с заявками — уже нет, и это повод поменять схему заранее.

Такую проверку достаточно делать раз в квартал.

Частые ошибки

Копии на том же сервере. Спасают от «удалил файл», не спасают от отказа сервера.

Копии без проверки. См. выше.

Копируется не всё. База есть, загруженные файлы нет. Или наоборот.

Никто не смотрит, идут ли копии. Задание молча упало месяц назад, последняя копия месячной давности.

Копии доступны с того же аккаунта, что и сайт. Кто получил доступ к панели, тот получил заодно и все копии.

Не учтён закон. Персональные данные в резервной копии остаются персональными данными. По ч. 4 ст. 21 152-ФЗ оператор обязан уничтожить их по достижении цели обработки — по общему правилу в тридцатидневный срок; отдельного режима для резервных копий там нет. Копия, пережившая удаление данных по требованию человека, делает это удаление недействительным.

Последний пункт вспоминают редко, а он превращает аккуратную выгрузку в нарушение.

Минимальная схема, которая работает

Для небольшого сайта без сложностей:

Ежедневно — выгрузка базы, сжатие, копирование в отдельное хранилище
Еженедельно — файлы целиком туда же
Хранение — 7 дней / 4 недели / 3 месяца
Уведомление — письмо при ошибке выгрузки
Ежеквартально — развернуть копию и проверить

Настраивается один раз. Дальше от Вас нужны две вещи: раз в квартал развернуть копию и не пропускать письмо об ошибке.

Что проверить прямо сейчас

Ответьте себе на пять вопросов:

  1. Где лежит последняя копия моего сайта?
  2. Какой она давности?
  3. Входит ли в неё база данных?
  4. Лежит ли она где-то, кроме основного сервера?
  5. Кто-нибудь когда-нибудь из неё восстанавливался?

Если на любой из вопросов нет ответа — это и есть текущее состояние резервного копирования, независимо от того, какие галочки стоят в панели.

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

Читайте дальше

Надёжность

Что делать, если разработчик сайта пропал

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

Серверы

Как перенести сайт на другой сервер без простоя

Простоя при переносе не бывает по одной причине: новый сервер поднимают и проверяют до того, как на него направляют посетителей. Дальше начинаются детали — TTL, кодировка базы, почтовые записи, — и переезд обычно спотыкается именно на них.