Для надёжной работы любого сервиса необходимо иметь его резервную копию (backup или бэкап), которую можно быстро восстановить в случае аппаратного или программного отказа. Именно эта задача решается подготовкой резевных копий. Необходимость создания бэкапов лучше всего описывает известная в среде системных администраторов поговорка: есть два типа людей – кто ещё не делает бэкапы, и кто уже делает. Мы поможем вам сразу оказаться в последней категории и не учиться на собственных ошибках потери данных.
Необходимо отметить, что использование RAID-массивов не решает задачу резервного копирования. RAID защищает только от поломки носителей информации (жетских дисков) и обеспечивает хорошую скорость доступа к данным, но не защищает от программной ошибки. Также, RAID не помогает в случае серьёзного повреждения или изьятия сервера.
Технические подробности
Бэкапы должны быть как локальными, хранящиеся непосредственно на рабочей машине, так и удалёнными – хранящиеся на других серверах. Первые на случай физического отказа или изъятия сервера. Типичная схема создания резервной копии состоит из следующих этапов:
- Создания локальной резервной копии непосредственно на машине: скриптов/кода, дампа базы данных, пользовательских данных, настроек сервера и программного обеспечения.
- Копирования бэкапа на удалённую машину по защищённым протоколам SCP/SFTP на удалённый сервер.
- Автоматическое управление бэкапами на удалённой машине: старые бэкапы заменяются новыми, хранится несколько последних версий бэкапов. Последние версии сохраняются в разных временных масштабах, наиболее типичный из которых: несколько дневных, недельных и месячных версий.
- Периодическая проверка резервных копий на способность их восстановления.
Резервные копии могут быть: полными и дифференциальными (разностными). Полный бэкап полностью содержит необходимую для восстановления сервиса информацию, дифференциальный – изменения относительно последнего полного бэкапа. Очевидно, что полный бэкап занимает существенно больше дифференциального. С другой стороны, полный бэкап полностью автономен и, следовательно, более надежен, восстановление из полного бэкапа проще и занимает меньше времени, чем из дифференциального. На обслуживаемых нами серверах мы используем оба способа создания резервных копий, при этом полный делается практически во всех случаях, а дифференциальный – обычно в случае ограничения места на конечном хранилище данных.
Копирование резервной копии на удалённый сервер происходит по защищённым протоколам SCP/SFTP, которые обеспечивают безопасность передачи данных по каналам связи.
Что есть хороший бэкап
Хороший бэкап должен быть:
- Очевидно, рабочим, т.е. восстанавливаемым в исходные данные. К сожалению, когда все отлично работает, мало кто проверяет бэкапы на их целостность. Если этого не делать, можно в случае отказа остаться с некорректной версией бэкапа и не восстановить сервис.
- Быстро восстанавливаемым, чтобы в случае отказа не допускать длительного простоя сервиса. Для этого полезен локальный и полный бэкап, на восстановление которого требуется минимум времени. В критичных случаях, возможна установка резервного сервиса на другой физической машине и переключение на неё в случае необходимости.
- Физически удалённым, т.е. храниться на другой физической машине на случай изьятия или разрушения всего сервера.
- Не единственным. Бывают ситуации, когда ошибка в данных обнаруживается уже после создания очередной резервной копии. Следовательно, для восстановления требуется несколько резервных копий, подготовленных в разное время. Несколько разных по времени резервных копий позволяют откатиться на нужную версию данных.
Что сделаем мы
- Разработаем для вашего проекта оптимальный план резервного копирования данных.
- Настроим систему резервного копирования для серверов под управлением ОС Linux, BSD и Windows.
- Предусмотрим различные возможные отказы, защитим от многих из них и минимизируем время простоя в случае отказа.
- При необходимости подберем аппаратные решения или хранилища данных для резервных копий.