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

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

 Anytime backup

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Больше материалов выкладываю на своем Дзен канале

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

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

Ваши предложения и пожелания пишите на pro@kosmom.ru

Теги

ajax axios backup bootstrap core framework eloquent excel home project html ios javascript keep-alive kpi laravel legacy mvp orm php rip scroll solid timestamp undefined vue vuetify watch безопасность биометрический паспорт ваша любаша для путешествий загран на 10 лет загран паспорт загранпаспорт нового образца зимние книги как заполнить анкеты кеширование книги на новый год логирование мцф недвижимость новогодние книги образец заполнения антеты паспорт для путешествий паспорт нового поколения печать продукт проектирование прокси разработка ремонт ремонт в апартаментах ремонт нежилого помещения самокат сдача сколько стоил ремонт апартаментов спорт стандарты таблица финансы хостинг цена ремонта что почитать зимой юзабилити

Случайный пост

10.02.2011 13:23
Отображаем все скрытые смайлики для Qip Infium