Microsoft SQL Server 2019 позволяет использовать встроенные средства резервного копирования и обслуживания баз данных — Maintenance Plans. Описываемый план обслуживания успешно используется для баз данных 1С, но не ограничивается ими.
Ранее уже была подобная статья для Microsoft SQL Server 2014:
Maintenance Plans — резервное копирование и обслуживание баз данных в Microsoft SQL Server 2014
Но с тех пор в план обслуживания были внесены некоторые изменения.
В данном случае план предназначен для обслуживания баз данных исключительно с моделью восстановления FULL. Если вы используете другую модель восстановления, то нужно внести изменения в план, потому что резервное копирование лога транзакций вам может не понадобиться. Модель восстановления FULL используется из-за настроенного зеркалирования баз данных.
Данный план решает задачи:
- Резервное копирование баз данных.
- Ежедневное сжатие баз данных и лога транзакций.
- Оптимизация индексов.
- Сброс статистики.
- Обслуживание баз данных.
Резервное копирование будет осуществляться на сетевую шару другого сервера от имени пользователя, под которым запущен экземпляр SQL сервера.
Планы обслуживания
Создавать планы обслуживания буду с нуля. Вернее я создам один план обслуживания, а в нём будет пять субпланов. Но мне это название "субпланы" или "подпланы" не нравится, я их просто называю "планы".
Итак, у нас сервер, на котором несколько баз данных 1С в режиме восстановления FULL. Планы обслуживания и резервного копирования не настроены.
Работаем в Management Studio. Коннектимся к серверу и переходим в Management → Maintenance Plans. Нажимаем правую кнопку, выбираем New Maintenance Plan...
Указываем название плана, я пишу "Backup". OK.
Создаётся основной план обслуживания.
Внутри создаём пять планов. 1C_DAILY, 1C_HOURLY, 1C_MONTHLY — для резервного копирования и обслуживания. 1C_INDEX — для работы с индексами. 1C_STAT — для работы со статистикой.
1C_DAILY
Настраиваем расписание. План будет выполняться ежедневно по ночам в 1:10.
После создания расписания создаём сам план обслуживания:
Первой запускается проверка целостности всех пользовательских баз данных.
После проверки целостности запускается резервное копирование файлов данных. Для этого в типе резервного копирования выбираем опцию Full.
Во вкладке Destination задаём путь для хранения резервных копий. Я сохраняю ежедневные бэкапы в папке daily. Расширения файлов — bak.
Во вкладке Options указываем дополнительные параметры и срок хранения. Я буду хранить ежедневные бэкапы 94 дня. После истечения срока бэкапы пометятся как expired.
Третий шаг в плане — снова резервное копирование. На этот раз лога транзакций. Для этого в типе резервного копирования выбираем опцию Transaction Log.
Во вкладке Destination задаём путь для хранения резервных копий логов. Я сохраняю ежедневные бэкапы логов в той же папке daily. Расширения файлов — trn.
Во вкладке Options указываем дополнительные параметры и срок хранения. Я буду хранить хранить ежедневные бэкапы логов также 94 дня.
А дальше план выполнения разделяется на две ветки, которые выполняются параллельно, поскольку не мешают друг другу.
В первой ветке выполняется сжатие баз данных. Без этого логи будут бесконечно расти. Освобождённое место отдаём операционной системе.
После сжатия выполняется блок T-SQL команд:
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
Во второй ветке проводится обслуживание баз данных. Сначала удаляются старые ежедневные бэкапы старше 94 дней.
Затем удаляются старые ежедневные бэкапы логов старше 94 дней.
После завершения работы обеих веток плана отправляется уведомление на почту.
Для того, чтобы можно было отправлять уведомления на почту, вам может потребоваться предварительно настроить Database Mail.
Включаем Database Mail в Microsoft SQL Server 2019
1C_HOURLY
Настраиваем расписание. План будет выполняться один раз в час каждую 17-ю минуту.
После создания расписания создаём сам план обслуживания:
План простой, всего два пункта. Сначала делаем резервную копию лога транзакций.
Во вкладке Destination задаём путь для хранения резервных копий логов. Я сохраняю ежечасные бэкапы логов в папке hourly. Расширения файлов — trn.
Во вкладке Options указываем дополнительные параметры и срок хранения. Я буду хранить хранить ежечасные бэкапы логов 7 дней.
Потом проводим обслуживание, удаляем старые ежечасные бэкапы логов старше 7 дней.
1C_MONTHLY
Настраиваем расписание. План будет выполняться один раз в месяц первого числа в 5:10 утра.
После создания расписания создаём сам план обслуживания:
В этом плане у нас будет пять шагов. Первой запускается проверка целостности всех пользовательских баз данных.
После проверки целостности делаем резервное копирование файлов данных. Для этого в типе резервного копирования выбираем опцию Full.
Во вкладке Destination задаём путь для хранения резервных копий. Я сохраняю ежемесячные бэкапы в папке monthly. Расширения файлов — bak.
Во вкладке Options указываем дополнительные параметры. Срок хранения ежемесячных бэкапов не ограничен. Они будут архивироваться.
Третий шаг в плане — резервное копирование лога транзакций. Для этого в типе резервного копирования выбираем опцию Transaction Log.
Во вкладке Destination задаём путь для хранения резервных копий логов. Я сохраняю ежемесячные бэкапы логов в той же папке monthly. Расширения файлов — trn.
Во вкладке Options указываем дополнительные параметры. Срок хранения ежемесячных бэкапов логов тоже не ограничен. Они будут архивироваться.
Следующим шагом чистим историю. Удаляем всё что старше двух лет.
Отправляем уведомление.
1C_INDEX
Настраиваем расписание. План будет выполняться один раз в неделю по субботам в 4:10 утра.
После создания расписания создаём сам план обслуживания:
Всего три шага. Перестроение индексов. Перестраиваю в 8 потоков.
Реорганизация индексов.
Уведомление.
1C_STAT
Настраиваем расписание. План будет выполняться один раз в неделю по воскресеньям в 21:00.
После создания расписания создаём сам план обслуживания:
Три шага. Сначала Обновление статистики.
После выполняется блок T-SQL команд:
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
Уведомление.
Вместо заключения
Если у кого-то есть советы и дельные мысли по поводу обслуживания и резервного копирования баз данных 1С — пишите.