Резервное копирование баз 1С происходит стандартными планами обслуживания СУБД MSSQL. Система позволяет делать надежные полные, а также дифференциальные копии баз данных. Процесс резервного копирования проходит незаметно для клиента и может выполняться в рабочее время без остановки работы пользователей в 1С.
Если вам необходимо организовать резервное копирование 1С, мы предоставляем его бесплатно в рамках услуги аренда сервера 1С.
Вместе с резервным копированием целесообразно выполнять регламентные операции СУБД, они также делаются встроенными инструментами и их включают в планы обслуживания.
Основные регламентные операции это:
- Обновление статистики
- Очистка процедурного КЭШа
- Реорганизация индекса
- Перестроение индекса
В нашей инструкции мы рассмотрим следующий план резервного копирования и регламентных операций с СУБД.
Субпланы резервного копирования
Daily_Full - Ежедневно в 0:00, кроме воскресенья. Полная резервная копия баз, реорганизация индексов, обновление статистик, очистка процедурного кэша.
Daily_diff - С понедельника по пятницу дважды в день, в 12.00 и 17:00. Дифференциальная копия баз.
Daily_log - С понедельника по пятницу каждые 15 минут с 8.00 до 19.00. Копия логов.
Weekly - Каждое воскресенье в 0.00. Полная резервная копия баз. Перестроение индексов.
Порядок действий:
- Необходимо запустить Microsoft SQL Server Management Studio и выполнить подключение к серверу.
- Для ВСЕХ пользовательских баз данных отключить автоматическое обновление индексов. Это связано с тем, что обновление индексов будет производиться по указанному нами расписанию.
- Открываем список баз данных, выделяем базу и вызываем правой кнопкой мыши контекстное меню.
- Открываем опции базы, меняем значение параметра Auto update statistics с true на false.
- Создаем новый план обслуживания Maintenance:
- Корректируем имя субплана и настраиваем расписание. Двойной клик по имени Subplan_1.
Пример расписания:
При такой настройке расписания задача будет выполняться ежедневно в 0:00, кроме воскресенья.
ВАЖНО! Пояснение по переводу режимов восстановления.
Перевод в режим SIMPLE позволяет обрезать лог транзакций и ускорить процесс работы с индексами. Данное действие является не обязательным. Так же важно помнить, что при переводе базы в режим SIMPLE будет урезан лог транзакций, что сделает невозможным восстановление на любую точку времени с момента последней полной копии. В нашей инструкции происходит полная копия, далее перевод в SIMPLE, далее проходят операции с индексами и после этого база возвращается снова в модель FULL, таким образом интервал времени в котором база находится в модели SIMPLE минимальный и находится во временных рамках заранее оговоренного с клиентами временного окна в которое выполняются регламентные операции.
- При работе с индексами баз данных желательно перевести пользовательские базы из режима восстановления FULL в режим SIMPLE. Для этого добавляем в субплан задачу Execute T-SQL Statement task.
- В настройках задачи добавляем код:
DECLARE @name VARCHAR(50)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC('ALTER DATABASE ['[email protected]+'] SET RECOVERY SIMPLE WITH NO_WAIT')
FETCH NEXT FROM db_cursor INTO @name
END
- Добавляем задачу реорганизации индексов:
- В настройках задачи выбираем реорганизацию всех пользовательских баз:
- После реорганизации индексов следует провести обновление статистики пользовательских баз:
- В настройках выбираем обновление всей статистики всех пользовательских баз с полным сканированием:
- Сбрасываем процедурный кэш SQL-сервера и возвращаем пользовательские базы из режима восстановления SIMPLE в режим FULL. Для этого добавляем в субплан задачу Execute T-SQL Statement task.
- В настройках задачи добавляем код:
DBCC FREEPROCCACHE
DECLARE @name VARCHAR(50)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC('ALTER DATABASE ['[email protected]+'] SET RECOVERY FULL WITH NO_WAIT')
FETCH NEXT FROM db_cursor INTO @name
END
- Теперь необходимо добавить в субплан задачи очистки. Эти задачи способны обрабатывать только один тип файлов резервных копий. Так как создается 2 типа файлов (bak и trn), задания делаем тоже два.
- В настройках задания указываем путь к резервным копиям, возраст копий для удаления (4 недели) и расширение файлов.
- Резервные копии складываются в отдельные папки для каждой базы, поэтому включаем поиск в подкаталогах первого уровня:
- Настройки второй задачи отличаются расширением удаляемых файлов: trn.
- После удаления устаревших резервных копий добавляем задачу создания новой полной резервной копии:
- Настраиваем добавленное задание:
- Указываем тип backup Full, указываем пункт все пользовательские базы без игнорирования отключенных баз.
- Ставим время устаревания резервных копий 14 дней.
- Указываем создание отдельных файлов для каждой базы данных с созданием отдельных папок для каждой базы, указываем путь для сохранения (локальный или сетевой). Расширение файлов резервных копий bak.
- Включаем проверку целостности резервных копий (Verify backup integrity), включаем сжатие резервных копий (Compress backup).
- Теперь необходимо связать последовательно все задачи. Для этого необходимо выделить первую, нажать на стрелке внизу задачи и нажать на следующей.
- Добавляем субпланы Daily_diff и Daily_log:
- Расписание и настройки для Daily_diff:
Данный субплан будет выполняться с понедельника по пятницу дважды в день, в 12.00 и 17:00.
- Добавляем задачу создания разностной резервной копии:
- Настройки для задачи резервирования в субплане Daily_diff аналогичны таковым в Daily_full, за исключением типа резервирования: Differential.
- Расписание и настройки для Daily_log:
Расписание задачи настроено на выполнение с понедельника по пятницу каждые 15 минут с 8.00 до 19.00.
- Добавляем задачу создания резервной копии.
Настройки задачи резервирования log отличаются типом (transaction log) и расширением (trn) резервных копий.
- Создадим субплан Weekly еженедельного обслуживания:
- Настраиваем расписание:
Задача будет запускаться каждое воскресенье в 0.00.
- Переводим пользовательские базы из режима восстановления FULL в режим SIMPLE. Для этого добавляем в субплан задачу Execute T-SQL Statement task.
- В настройках задачи добавляем код:
DECLARE @name VARCHAR(50)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC('ALTER DATABASE ['[email protected]+'] SET RECOVERY SIMPLE WITH NO_WAIT')
FETCH NEXT FROM db_cursor INTO @name
END
- Добавляем задачу перестроения индексов:
- В настройках задачи выбираем перестроение индексов всех пользовательских баз:
- Сбрасываем процедурный кэш SQL-сервера и возвращаем пользовательские базы из режима восстановления SIMPLE в режим FULL. Для этого добавляем в субплан задачу Execute T-SQL Statement task.
- В настройках задачи добавляем код:
DBCC FREEPROCCACHE
DECLARE @name VARCHAR(50)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC('ALTER DATABASE ['[email protected]+'] SET RECOVERY FULL WITH NO_WAIT')
FETCH NEXT FROM db_cursor INTO @name
END
- Так как план еженедельного обслуживания не выполняется в воскресенье, добавим задачу создания полной резервной копии пользовательских баз:
- Настраиваем добавленное задание:
- Ставим время устаревания резервных копий 14 дней.
- Включаем проверку целостности резервных копий (Verify backup integrity), включаем сжатие резервных копий (Compress backup).
- Указываем создание отдельных файлов для каждой базы данных с созданием отдельных папок для каждой базы, указываем путь для сохранения (локальный или сетевой). Расширение файлов резервных копий bak.
- Указываем тип backup Full, указываем пункт все пользовательские базы без игнорирования отключенных баз.
- Теперь необходимо связать последовательно все задачи. Для этого необходимо выделить первую, нажать на стрелке внизу задачи и нажать на следующей.