Резервная копия (backup) базы данных SQL Server на FTP

Как известно нельзя хранить все яйца в одной корзине. К резервным копиям базы данных это утверждение так же актуально. Если база данных имеет разумные “габариты” можно рассмотреть размещение архива на сервере FTP.

Куда?

Это наверно частый вопрос, который возникает в голове, когда задумываешься о размещении архива. Итак моя подборка:

  • Собственный (приватный) FTP, размещенный либо в локальной сети, либо в другом офисе (VPN). Тут все ясно;
  • Вставить USB флешку в Mikrotik и открыть сервис FTP для сервера;
  • Свой хостинг провайдер. Часто мы покупаем хостинг с стотыщмиллионов Гб дискового пространства, а используем 10%. Это реальный шанс использовать его более полно;
  • Бесплатный FTP сервис. Тут единственный минус – никаких гарантий сохранности. Из простых и эффективных сервисов – net2ftp.ru;

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

SQL Server

Множество примеров архивирования предлагают включить xp_cmdshell и выполнить формирования архива и дальнейшую его публикацию на FTP средствами SQL Server. Для меня такой вариант не приемлем, поэтому я разделил процесс на 2 этапа: формирование архивов и упаковка с отправкой на FTP.

Чтобы сформировать архив достаточно в планировщике SQL Server (SQL Server Agent), запланировать выполнение скрипта вида:

Данный скрип сформирует архив и будет перезаписывать его при каждом вызове скрипта.

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

Упаковка и отправка на FTP

Эта задача будет решаться bat файлом, который выполнит архивирование с паролем и публикацию на FTP сервер внесенным в планировщик Windows. При формировании задачи необходимо учесть время создания архива базы данных SQL Server. Например, формирование архива можно запланировать на 5:00 (утра), а его отправку на 6:00 (утра). Время можно выбрать произвольное исходя из загруженности сервера.

Архивирование в bat файле будет следующего вида:

Данный скрипт занесет в архив все файлы с расширением *.bak в один архив. Это можно использовать для отправки на FTP несколько резервных копий баз данных в одном архиве (zip).

Отправку на FTP сервер можно осуществить и штатным клиентом Windows – ftp.exe, но у него один, но весомый недостаток – он не поддерживает пассивный режим. Поэтому предлагаю использовать бесплатный ncftpput (только отправляет файл)

Аналогично для каждого сервера, на который вы хотите разместить копию архива. Если добавить ключ -DD к ncftpput, то при успешной отправке файла он удалит его локальную копию.

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.