Резервные копии конфигураций 1С с помощью «Планов обслуживания» в MSSQL

Создание резервных копий конфигураций 1С с помощью «Планов обслуживания» в СУБД MS SQL является одной из главных задач администратора. 

Содержание:
  1. Немного теории по планам обслуживания
  2. Постановка задачи по созданию планов обслуживания
  3. Создание плана обслуживания (Полная копия)
  4. Создание плана обслуживания (Разностная копия)
  5. Создание плана обслуживания (Резервная копия журналов транзакций)
  6. Мониторинг планов обслуживания
1. Немного теории по планам обслуживания

Может многие со мой не согласятся, но для меня главной целью использования «Планов обслуживания» в MS SQL является создание резервных копий. Местные ITишники либо еще не делают резервные копии, либо уже делают, после печальных последствий отсутствия резервных копий. Да, не спорю, «Планы обслуживания» также нужны для оптимизации БД и выгрузки журналов транзакций, в последнем случаи, если не выполнять выгрузку журналов транзакций, у вас может вырасти база данных и занять все пространство на диске, 1С встанет колом и пользователи не смогут работать с конфигурацией, а вам придется выполнять шринк (Shrink) базы, это наверно самое страшное для ITишники после поломки базы и отсутствии резервных копий. Но об шринке (Shrink) поговорим в другой раз.

MS SQL Server поддерживает три модели восстановления:

  1. Simple (Простая) — хранится только необходимый для жизни остаток журнала транзакций.
  2. Full (Полная) — хранится весь журнал транзакций с момента последнего резервного копирования журнала транзакций.
  3. Bulk logged (С неполным протоколированием) — часть операций записываются в очень компактном формате. В остальном идентична Full.

Модель восстановления базы можно посмотреть, в свойствах базы данных, на вкладке Параметры. Там же ее можно поменять. На практике я использую Full (Полная).

MS SQL поддерживает три типа формирования резервных копий:

  1. Full (Полная копия)
  2. Differential (Дифференциальная копия, Разностная копия)
  3. Log (Резервная копия журналов транзакций)

Не путайте понятия: полная модель восстановления и полная резервная копия — разные вещи!!!

Рассмотрим подробно три типа формирования резервных копий.
1) Полная резервная копия
Позволяет восстановить состояние базы данных на некоторый момент времени. Состоит из копии файлов данных и журнала транзакций на момент завершения формирования резервной копии.

2) Разностная резервная копия
Хранит данных, изменившиеся с момента последней Полной резервной копии. При восстановлении нужно сначала восстановить Полную резервную копию в режиме NORECOVERY, потом можно применить любую из последующих Разностных копий. За счет этого можно значительно снизить объём дискового пространства для хранения резервной копии. Обратите внимание: без предыдущей Полной резервной копии Разностная копия бесполезна. Каждая последующая Разностная копия будет хранить все данные, входящие в предыдущую Разностную резервную копию, сделанную после предыдущей Полной копии. Поэтому каждая следующая Разностная копия больше предыдущих, пока снова не сделать Полную копию. Соответственно для восстановления на какой-то момент времени достаточно последней Полной резервной копии и последней Разностной копии. Промежуточные копии для восстановления не нужны.

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

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

2. Постановка задачи по созданию планов обслуживания

В организации N работают по шестидневке с 8:00 до 17:00. Обед с 12:00 до 13:00.
Имеется в MS SQL база данных с именем collegeprof.
Что нужно сделать:
1) Проверить модель восстановления базы данных, должна быть Полная.
2) Создать план обслуживания, который будет создавать Полную резервную копию базы данных каждое воскресение в 17:00. Очищать хранилище от устаревших резервных копий старше 15 дней.
3) Создать план обслуживания, который будет создавать Разностную копию базы данных каждый день в 21:00 кроме воскресения.
4) Создать план обслуживания, который будет создавать Резервную копию журналов транзакций два раза в день, в 12:00 и в 17:00, кроме воскресения.

3. Создание плана обслуживания (Полная копия)

Запускаем SQL Server Management Studio, в Обозревателе объектов проходим по ветке Управление / Планы обслуживания.

Правой кнопкой по пункту Планы обслуживания и в контекстном меню выбираем Создать план обслуживания… Указываем Имя, к примеру: CollegePROF. В открывшемся конструкторе будем создавать вложенные планы обслуживания. Щелкните два раза по строке ВложенныйПлан _1. Задайте Имя, Описание и обязательно настройте Расписание выполнения вложенного плана обслуживания: Еженедельно в воскресение 17:00:00

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

После двойного нажатия по элементу Проверка целостности базы данных откроется диалоговое окно настройки задачи. В свойстве Базы данных отмечаем нужную базу — collegeprof, а остальное настраиваем как показано на рисунке. При желании можно посмотреть T-SQL код полученной задачи.

Размещаем следующую задачу Перестроение индекса она у нас будет выполнятся только после успешно выполненной предыдущей задачи. В свойстве Базы данных указываем collegeprof. Остальное можно оставить по умолчанию.

Для связи двух задач, щелкните один раз по задаче Проверка целостности базы данных, у этой задачи появится зеленая стрелка, щелкните по ней и не отпуская соедините с задачей Перестроение индекса.

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

Размещаем задачу Обновление статистики, которая будет выполнятся после завершения предыдущей Перестроение индекса. Настраиваем эту задачу как на рисунке, не забываем выбрать базу данных.Размещаем задачу Выполнение инструкции T-SQL с кодом: 

				
					DECLARE @intDBID INTEGER 
SET @intDBID = (SELECT dbid FROM master.dbo.sysdatabases WHERE name = 'collegeprof') 
DBCC FLUSHPROCINDB (@intDBID)
				
			

Инструкция DBCC FREEPROCCACHE используется для аккуратной очистки кэша планов. Освобождение кэша планов приводит, например, к тому, что хранимая процедура повторно компилируется, а не используется из кэша.При настройке для своей базы не забываем изменить имя БД collegeprof.

Размещаем следующую задачу Резервное копирование базы данных она у нас будет выполнятся полную резервную копию базы данных. Размещать файлы резервных копий желательно на СХД (систему хранения данных), если нет, то на другом физическом диске, но ни в коем случае не на том же диске где сама база данных, иначе теряется весь смысл резервных копий. Настраиваем как показано на рисунке, не забываем указать конкретную базу данных.

На вкладке Целевой объект указываем папку для резервной копии и ставим флаг Создавать вложенный каталог для каждой базы данных. Данное свойство позволит в выбранной папке автоматически создать папку по названию базы данных, в нашем случае — collegeprog. Проверяем, что бы расширение файла резервной копии было bak.

На вкладке Параметры ставим флаг в свойстве Проверять целостность резервной копии. Закрываем окно настроек.

Размещаем следующую задачу Очистка журнала, она у нас будет выполнятся очистку журналов. Оставляем все по умолчанию.

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

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

4. Создание плана обслуживания (Разностная копия)

Добавим вложенный план обслуживания. Указываем имя Раз в день (разностная). Открываем расписание задания. Указываем, что наша задача будет выполняться все дни недели кроме воскресенья. Задание выполняется однократно в 21:00.

Размещаем задачу Проверка целостности базы данных. В свойстве Базы данных указываем нужную базу, в нашем случае база данных collegeprof.

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

На вкладке Целевой объект указываем папку для резервной копии. Ставим флаг в свойстве Создать вложенный каталог для каждой база данных. В свойстве Расширение файла резервной копии указываем bakr

На вкладке Параметры ставим флаг в свойстве Проверять целостность резервной копии.

Вложенный план обслуживания готов.

 5. Создание плана обслуживания (Резервная копия журналов транзакций)

Добавим два вложенных плана обслуживания, один настроим на 12:00 второй на 17:00, будут они выполняться каждый день кроме воскресенья.

Оба вложенных плана обслуживания настраиваем одинаково.

Разместим одну задачу Резервное копирование базы данных. Обратите внимание на Тип резервной копии, должен стаять Журнал транзакций.   

На вкладке Целевой объект указываем папку для резервной копии. Ставим флаг в свойстве Создать вложенный каталог для каждой база данных. В свойстве Расширение файла резервной копии указываем trn

На вкладке Параметры ставим флаг в свойстве Проверять целостность резервной копии.

Второй вложенный план обслуживания на 17:00 настраиваем так же как на 12:00. Сохраняем план обслуживания.

 

6. Мониторинг планов обслуживания

 После создания всех Планов обслуживания они появятся в ветке Агент SQL Server.

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

Для запуска определенного плана, достаточно в контекстном меню выбрать пункт Запустить задание на шаге… Запустите по порядку все задачи: Полная, Разностная, Журнал в обед и Журнал вечером.

Проверяем наличие резервных файлов в папке.

Рассмотрели минимальные азы создания Планов обслуживания в MS SQL для трех типов резервных копий баз данных: Full (Полная копия), Differential (Дифференциальная копия, Разностная копия) и Log (Резервная копия журналов транзакций).

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

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