Резервное копирование СУБД MS SQL Server¶
ℹ️ Резервное копирование — процесс создания копии данных на носителе (жестком диске и т. д.), предназначенном для восстановления данных в оригинальном или новом месте их расположения в случае их повреждения или разрушения. Создание резервных копий баз данных SQL Server, выполнение проверочных процедур восстановления резервных копий и хранение резервных копий в безопасном месте вне рабочей площадки помогают предотвратить возможную необратимую потерю данных. Резервное копирование — единственный способ защитить данные!
Резервное копирование "Первой Формы" состоит из двух частей:
-
Резервное копирование веб-интерфейса "Первой Формы" можно проводить с помощью обычного архиватора. Для дальнейшего восстановления работы приложения или переноса приложения на новый сервер достаточно создать резервные копии следующих каталогов на веб-сервере:
-
C:\inetpub\wwwroot (всей папки wwwroot)
-
C:\Program Files (x86)\TCJobService (всей папки TCJobService) (Устаревшее: не используется, начиная с версии 2.215)
2. Резервное копирование баз данных осуществляется встроенными инструментами и процедурами сервера MS SQL. "Первой Формой" используются два типа баз данных, подлежащих регулярному резервному копированию:
-
D10Task — база данных, содержащая все сущности приложения: задачи, пользователи, прочие данные (кроме файлов).
-
TaskFilesDB — файловая база данных, содержащая хранящиеся в приложении файлы. Файловых баз может быть несколько, и по мере появления их необходимо добавлять в процедуру резервного копирования.
Названия баз данных могут отличаться от указанных выше.
Чтобы определить название базы данных посмотрите на строку DB в верхней части панели администрирования "Первой Формы".
Чтобы определить название файловой базы данных, в интерфейсе администратора "Первой Формы" перейдите в раздел Системные настройки — Провайдеры загружаемых файлов. В списке могут содержаться несколько строк, каждая из которых описывает подключение к отдельной базе данных. Щелкните по строке, чтобы открыть окно с настройками провайдера, и в параметре Строка подключения проверьте название базы данных в выражении вида:
"initial catalog=TaskFilesDB" (где TaskFilesDB — название файловой базы данных).
ℹ️ База данных должна быть в режиме FULL. Нахождение БД в режиме SIMPLE не дает возможности восстановить БД на заданный момент времени и не рекомендуется к использованию на рабочей ("боевой") БД.
Рекомендации по резервному копированию БД SQL¶
- Full backup — Полное копирование БД. Не реже чем 1 раз в неделю (лучше каждую ночь)
Пример:
-- Замените дату в имени файла на актуальную, например: + CONVERT(varchar, GETDATE(), 112)
BACKUP DATABASE [D10Task] TO DISK = N'\\backup-01\D10Task\D10Task_backup_2019_03_24.bak' WITH RETAINDAYS = 14, NOFORMAT, NOINIT, NAME = N'D10Task_backup_2019_03_24', SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10
- Differential backup (разностное копирование БД). Не реже чем 1 раз в день, кроме дня когда делается Full backup (лучше чаще)
Differential backup включает все изменения с момента последнего Full backup. Инкрементальным называется Log backup, включающий изменения с момента последнего Log backup.
Пример:
BACKUP DATABASE [D10Task] TO DISK = N'\\backup-01\D10Task\D10Task_backup_2019_03_24_10.bakdiff' WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'D10Task_backup_2019_03_24_10', SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10
- Log backup — Копирование журналов. Не реже чем 1 раз в час, кроме часа когда делаются Full и Diff backup
Пример:
BACKUP LOG [D10Task] TO DISK = N'\\backup-01\D10Task\D10Task_backup_2019_03_24_11.trn' WITH NOFORMAT, NOINIT, NAME = N'D10Task_backup_2019_03_24_11', SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10
Log backup "отрезает" журнал (лог) БД, что обеспечивает защиту от "распухания" Transaction Log.
ℹ️ Резервное копирование баз данных рекомендуется выполнять средствами, предоставленными официальными поставщиками ваших back-up устройств, либо при помощи встроенного планировщика заданий SQL Server Agent (в версии Express эта функция недоступна).
ℹ️ При настройке резервного копирования рекомендуется выполнить процедуру восстановления для того, чтобы убедиться в корректности создаваемой копии.
ℹ️ Изложенные выше сведения носят рекомендательный характер. Клиент несет полную ответственность за резервное копирование своих баз данных.