Резервное копирование

Процедура бекапа или резервного копирования очень проста, но может стать большой головной болью если её не делать (посмотрите на картинку). Бизнес многих компаний напрямую зависит от манипуляций с информацией которая хранится на серверах. Базы данных, репозитории исходных кодов, веб-проекты и т.д. Все это нужно ежедневно сохранять на резервные носители информации.
В случае потери информации и её невозможности восстановить компания может понести большие убытки.
В этой заметке я расскажу все про разнообразные варианты резервного копирования, от самописных скриптов до промышленных решений.
Во первых, есть несколько схем резервного копирования.

Копирование данных с продакшен-сервера на backup-сервер

Продакшен-сервер – это рабочий сервер, который выполняет какие либо сервисы для пользователей.
backup-сервер – это сервер на который копируется контент с продакшен-сервера. Единственное предназначение такого сервера – хранить данные с других серверов. Обычно сам он никаких сервисов не выполняет. Главное требование – большое дисковое пространство. Скорость дисковых
накопителей особого значения не имеет, так как доступ к данным не частый – записать бекап на диск и считать его в случае необходимости.
Минус этого решения – необходимость в отдельном сервере под backup`ы — а это дополнительные затраты. Маленькие и средние компании обычно пытаются сэкономить деньги на покупке вспомогательного оборудования.

Перекрестное копирование данных

Когда два или более продакшен серверов копируют друг на друга свои данные. В случае когда на продакшен серверах есть достаточное количество дискового пространства для хранение данных с других серверов, их можно использовать как backup-серверы. Мы копируем данные с сервера server1
на server2 а данные с server2 на server1.
Плюс – экономим деньги на оборудование. Как я писал выше маленькие и средние организации могут не выделить деньги на вспомогательное оборудование, даже если это необходимо под резервные копии. В таком случае вам может помочь такой способ бекапа.

Системы хранения данных

“Классические” сервера для хранения бекапов хороши при относительно небольших объемах. Сейчас это несколько сотен гигабайт. Когда же объемы гораздо больше на помощь приходят СХД, Системы Хранения Данных:

  • Дисковые массивы
    По сути такой же сервер, но спроектирован специально под хранение данных. Имеет много HDD большего размера.
  • Ленточные накопители
    Они же стримеры. Данные как и в случае с ленточными библиотеками записываются на специальные картриджи. Как правило, картридж – это магнитная лента в пластиковом корпусе.
  • Ленточные библиотеки
    Предназначены для автоматизированного резервного копирования данных. Одновременное использование нескольких лентопротяжных механизмов увеличивает производительность библиотеки и сокращает время, необходимое для записи и чтения резервных копий.
  • Другие носители данных
    optical disc (CD-R/RW, DVD-R/RW);
    flash-накопители;
    ZIP, Jaz, MO драйвы.

Виды бекапа

  • Полное – все файлы и каталоги которые мы хотим сохранять на отдельном носителе.
  • Инкрементальное – копируем только то, что изменилось с момента последнего резервного копирования. Полного или инкрементального.
  • Дифференциальное – копируем только то, что изменялось с моментапоследнего ПОЛНОГО бекапа.
  • Пофайловый метод – копируем нужные файлы в индивидуальном порядке.
  • Дублирование диска – метод при котором мы делаем полный снимок диска. Например утилитой dd.
  • Теневой метод — метод совмещающий все вышеперечисленные, основанный на мониторинге изменения файловой системы

Схемы ротации бекапов

Ротация – это политика по которой делается резервное копирование. Как часто мы будем делать бекап, как долго мы будем хранить резервные копии. Все это описывается политикой ротации.

  • Одноразовое копирование – администратор делает копирование вручную. Обычно делается полный бекап данных.
  • Простая ротация – подразумевается, что некий набор носителей используется циклически. К примеру 5 ленточных носителей на каждый день недели. В пятницу мы делаем полный бекап данных а в остальные дни недели инкрементальный.
  • “Дед, отец, сын” (GFS) – имеет иерархическую структуру ротации. Используется три набора носителей. Раз в неделю делается полной бекап данных. В остальные дни недели – инкрементальный. Раз в месяц делается еще один полный бекап системы. Набор носителей для ежедневного инкрементального копирования – сын, набор для еженедельного полного бекапа – отец, набор для ежемесячного полного бекапа – дед.
  • “Ханойская башня” – название пошло от древней китайской игры. Смысл игры заключается в следующем. Есть три стержня и какой-то набор дисков. Диски нужно перемещать со стержня на стержень, но так, чтобы каждый новый диск ложился на диск большего диаметра. Такой метод бекапа достаточно сложен и практически не применяется в настоящее время.
  • “10 наборов” – метод рассчитан на 10 наборов носителей. Период из 40 недель делится на десять циклов. В течение цикла за каждым набором закреплен один день недели. По прошествии четырехнедельного цикла осуществляется сдвиг номера набора. То есть в первом цикле за понедельник отвечал набор N1, за вторник N2, за среду N3 и т.д. Во втором цикле за понедельник будет отвечать набор N2, за вторник N3, за среду N4 и т.д. Такая схема позволяет равномерно распределить нагрузку между носителями но из-за своей сложности практически не используется.

Методы резервирования баз данных

  • hot backup – горячий бекап базы данных. Это когда резервная копия делается при включенном сервере БД.
  • cold backup – холодный бекап базы данных. Это когда сервер БД нужно выключить чтобы сделать резервную копию.