Вам больше не нужны бекапы

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

 Anytime backup

Однажды в одном проекте прошли малозаметные но важные данные. По истечению месяца, когда проблема всплыла - бекапов уже не было. Ситуация была плачевная.

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

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

Всё что вам нужно - правильным образом организовать рабочий режим и использовать правильные инструменты
Теперь по пунктам. Вот что вам нужно сделать:

По поводу логических файлов - здесь самое простое. Используйте системы контроля версий git/svn и тем самым можете вернуться к логике на любой момент времени.

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

Базы данных - здесь самое интересное. Даже если вы используете фреймворк с поддержкой миграций - у вас будут проводиться именно структурные изменения. Сами же данные восстановить вы не сможете. Здесь в качестве фиксации каждого изменений подойдёт запись запросов в виде ленты.

База данных Oracle пишет ленту сама и позволяет проводить такие механизмы автоматически.

В случае mysql - на лету такой механизм не предусмотрен.

Настройте события для адаптера для работы с базой данных, чтобы каждый запрос на изменение данных логировался и перед каждым из них логировалась команда (для Mysql)

set @@session.timestamp=<?=time()?>;

и сразу после этой команды пишите запрос на изменение данных (update / insert / merge / alter / delete / truncate / drop)
Таким образом все изменения данных, в том числе вычисляемые - будут проходить относительно той метки времени, когда на сервере в реальности был выполнен запрос без необходимости проводить какие-либо вычисления в самом запросе. Переменная уничтожается по окончании сессии, поэтому нет смысла восстанавливать её обратно (если вы используете отдельный сервер). Для восстановления вам понадобится создать отдельную базу, чтобы не затрагивать изменения в текущей базе. Файлы ленты после создания нового полного бекапа - можете смело архивировать для экономии места.

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

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

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

Таким образом мы минимизируем количество места на сервере бекапа, и увеличиваем качество бекапов с возможностью восстановления вплоть до любой метки времени

Удачи в сохранности ваших данных.

  • Автор: kosmom
  • Рейтинг: 0
  • Просмотров: 110
  • Комментариев: 0
  • Создан: 19.03.2018 16:18

Комментарии (0)