Резервное копирование 1С на MSSQL
Резервное копирование баз 1С происходит стандартными планами обслуживания СУБД MSSQL. Система позволяет делать надежные полные, а также дифференциальные копии баз данных. Процесс резервного копирования проходит незаметно для клиента и может выполняться в рабочее время без остановки работы пользователей в 1С.
Если вам необходимо организовать резервное копирование 1С, мы предоставляем его бесплатно в рамках услуги аренда сервера 1С.
Порядок действий:
- Необходимо запустить Microsoft SQL Server Management Studio и выполнить подключение к серверу.
- Для ВСЕХ пользовательских баз данных отключить автоматическое обновление индексов. Это связано с тем, что обновление индексов будет производиться по указанному нами расписанию.
- Открываем список баз данных, выделяем базу и вызываем правой кнопкой мыши контекстное меню.
- Открываем опции базы, меняем значение параметра Auto update statistics с true на false.
- Создаем новый план обслуживания Maintenance:
- Корректируем имя субплана и настраиваем расписание. Двойной клик по имени Subplan_1.
Пример расписания:
При такой настройке расписания задача будет выполняться ежедневно в 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 ['+@name+'] 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 ['+@name+'] 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 ['+@name+'] 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 ['+@name+'] SET RECOVERY FULL WITH NO_WAIT') FETCH NEXT FROM db_cursor INTO @name END
- Так как план еженедельного обслуживания не выполняется в воскресенье, добавим задачу создания полной резервной копии пользовательских баз:
- Настраиваем добавленное задание:
- Ставим время устаревания резервных копий 14 дней.
- Включаем проверку целостности резервных копий (Verify backup integrity), включаем сжатие резервных копий (Compress backup).
- Указываем создание отдельных файлов для каждой базы данных с созданием отдельных папок для каждой базы, указываем путь для сохранения (локальный или сетевой). Расширение файлов резервных копий bak.
- Указываем тип backup Full, указываем пункт все пользовательские базы без игнорирования отключенных баз.
- Теперь необходимо связать последовательно все задачи. Для этого необходимо выделить первую, нажать на стрелке внизу задачи и нажать на следующей.
- Настраиваем расписание: