Регулярные оперативные копии рабочих баз 1С с помощью MS SQL 2008

В течение дня необходимо производить отладку "допилов" на свежих копия рабочих баз. Также необходимы актуальные копии и для экспериментов, в том числе и пользователям. На этом замечательном ресурсе есть много полезных публикаций с различными вариантами, как это сделать. В одном из них предлагается использовать инструмент мгновенных снимков баз, которые возможно выполнить только в версии Express Edition. В этом посте очень простой вариант, не требующий дорогостоящей версии MS SQL

К стандартному типовому набору планов обслуживания необходимо добавить ещё несколько очень простых планов обслуживания. Их можно создать как отдельными планами, так и одним общим с вложенными планами, у каждого из которых собственные расписания выполнения:

1. создание ежечасных резервных копий рабочих баз данных (с 07:30 до 18:00 каждый час)

Задача «Выполнение инструкции T-SQL»

BACKUP DATABASE [accounting] TO DISK = N’E:MSSQLBACKaccountingaccounting_backup.bak’ WITH NOFORMAT, NOINIT, NAME = N’accounting-Полная База данных Резервное копирование Бухгалтерия’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
BACKUP DATABASE [hrm] TO DISK = N’E:MSSQLBACKhrmhrm_backup.bak’ WITH NOFORMAT, NOINIT, NAME = N’zup_aes-Полная База данных Резервное копирование Зарплата’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

2. разворачивание на тестовые копии рабочих баз утреннего бэкапа (один раз в день в 07:40)

Задача «Выполнение инструкции T-SQL»

RESTORE DATABASE [accounting_test] FROM DISK = N’E:MSSQLBACKaccountingaccounting_backup.bak’ WITH FILE = 1, MOVE N’accounting‘ TO N’D:MSSQLDATAaccounting_test.mdf’, MOVE N’accounting_log’ TO N’E:MSSQLLOGaccounting_test_log.LDF’, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [accounting_test] FROM DISK = N’E:MSSQLBACKaccountingaccounting_backup.bak’ WITH FILE = 1, MOVE N’accounting‘ TO N’D:MSSQLDATAaccounting_test.mdf’, MOVE N’accounting_log’ TO N’E:MSSQLLOGaccounting_test_log.LDF’, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [hrm_test] FROM DISK = N’E:MSSQLBACKhrmhrm_backup.bak’ WITH FILE = 1, MOVE N’zup_aes’ TO N’D:MSSQLDATAhrm_test.mdf’, MOVE N’hrm_log’ TO N’E:MSSQLLOGhrm_test_log.LDF’, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [hrm_test] FROM DISK = N’E:MSSQLBACKhrmhrm_backup.bak’ WITH FILE = 1, MOVE N’hrm‘ TO N’D:MSSQLDATAhrm_test.mdf’, MOVE N’hrm_log’ TO N’E:MSSQLLOGhrm_test_log.LDF’, NOUNLOAD, REPLACE, STATS = 10
GO

3. ежечасное разворачивание на «теневые» копии рабочих баз ежечасного бэкапа (с 07:50 до 18:00 ежечасно)

Задача «Выполнение инструкции T-SQL»

 

RESTORE DATABASE [accounting_copy] FROM DISK = N’E:MSSQLBACKaccountingaccounting_backup.bak’ WITH FILE = 1, MOVE N’accounting‘ TO N’D:MSSQLDATAaccounting_copy.mdf’, MOVE N’accounting_log’ TO N’E:MSSQLLOGaccounting_copy_log.LDF’, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [accounting_copy] FROM DISK = N’E:MSSQLBACKaccountingaccounting_backup.bak’ WITH FILE = 1, MOVE N’accounting‘ TO N’D:MSSQLDATAaccounting_copy.mdf’, MOVE N’accounting_log’ TO N’E:MSSQLLOGaccounting_copy_log.LDF’, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [hrm_copy] FROM DISK = N’E:MSSQLBACKhrmhrm_backup.bak’ WITH FILE = 1, MOVE N’zup_aes’ TO N’D:MSSQLDATAhrm_copy.mdf’, MOVE N’hrm_log’ TO N’E:MSSQLLOGhrm_copy_log.LDF’, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [hrm_copy] FROM DISK = N’E:MSSQLBACKhrmhrm_backup.bak’ WITH FILE = 1, MOVE N’zup_aes’ TO N’D:MSSQLDATAhrm_copy.mdf’, MOVE N’hrm_log’ TO N’E:MSSQLLOGhrm_copy_log.LDF’, NOUNLOAD, REPLACE, STATS = 10
GO

4. ежечасное удаление полного ежечасного бэкапа Бухгалтерии (с 08:00 до 18:00 ежечасно)

Задача «Очистка после обслуживания»

EXECUTE master.dbo.xp_delete_file 0,N’E:MSSQLBACKaccountingaccounting_backup.bak’

5. 

4. ежечасное удаление полного ежечасного бэкапа Зарплаты (с 08:00 до 18:00 ежечасно)

Задача «Очистка после обслуживания»

EXECUTE master.dbo.xp_delete_file 0,N’E:MSSQLBACKhrmhrm_backup.bak’

Справочная информация (переменные, которые в скриптиках необходимо подменить на собственные):

рабочая база бухгалтерия accounting

рабочая база зарплата hrm

база с развёрнутой копией бухгалтерии на утро для тестов собственных «допилок» accounting_test

база с развёрнутой копией зарплата на утро для тестов собственных «допилок» hrm_test

база с развёрнутой оперативной копией бухгалтерии на каждый час работы для экспериментов в том числе пользователям accounting_copy

база с развёрнутой оперативной копией зарплата на каждый час работы для экспериментов в том числе пользователям hrm_copy

место размещения sql-ных mdf-баз D:MSSQLDATA

место размещения sql-ных логов E:MSSQLLOG

место хранения полных ежечасных бэкапов бухгалтерии E:MSSQLBACKaccounting

место хранения полных ежечасных бэкапов зарплаты E:MSSQLBACKhrm

регулярно создаваемый и удаляемый файл ежечасного бэкапа бухгалтерии accounting_backup.bak

регулярно создаваемый и удаляемый файл ежечасного бэкапа зарплаты hrm_backup.bak

файл базы данных развёрнутой ежесуточной копией бухгалтерии для тестов accounting_test.mdf

файл лога развёрнутой ежесуточной копией бухгалтерии для тестов accounting_test_log.ldf

файл базы данных развёрнутой ежечасной копией бухгалтерии для экспериментов accounting_copy.mdf

файл лога развёрнутой ежечасной копией бухгалтерии для экспериментов accounting_copy_log.ldf

файл базы данных развёрнутой ежесуточной копией зарплаты для тестов hrm_test.mdf

файл лога развёрнутой ежесуточной копией зарплаты для тестов hrm_test_log.ldf

файл базы данных развёрнутой ежечасной копией зарплаты для экспериментов hrm_copy.mdf

файл лога развёрнутой ежечасной копией зарплаты для экспериментов hrm_copy_log.ldf

Дальше как предлагалось в аналогичных статьях можно настроить, например effector saver, который будет регулярно формировать DT-шники хоть раз в сутки из баз accounting_test или hrm_test хоть ежечасно из баз accounting_copy или hrm_copy.

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

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

 Возможно, кого-то беспокоит сохранность архивных копий. Для этого оставляем стандартный набор планов обслуживания:

01. еждневное резервное копирование базы данных полное (например в 06:05)

02. ежечасный резервное копирование базы данных разностное (например с 08:20 до 19:00 каждый час)

03. ежечасный резервное копирование базы данных журнал транзакций (например с 08:25 до 19:00 каждый час)

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

04. еженедельный план Задача «Очистка после обслуживания» (например, в воскресенье в 05:00)

Удаление всех архивных копий старше (например) двух недель

Конечно же, не пренебрегаем планами, рекомендуемыми на ресурсе http://kb.1c.ru/articleView.jsp?id=13


7 Comments

  1. Valet

    Из описания непонятно для какой версии.

    Судя по всему, вместо Express надо читать Enterprise.

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

    И сомневаюсь, что кому-то интересно какие именно базы у вас бакапятся.

    Если ориентированно на «чайников», то план обслуживания в картинках был бы наглядней.

    Если же на специалистов, то им это не нужно.

    И не у всех SQL сервер простаивает, чтобы можно было восстанавливать базы.

    Сорри за отсутствие позитива.

    Reply ↓
  2. Созинов

    Express Edition — похоже и правда описался.

    Спасибо за статью, скину своему сисадмину, т.к. надоело уже разворачивать каждый раз локально свежие базы. Раньше использовал xstarter (была здесь статья), но сейчас перешел на ручные копии.

    Reply ↓
  3. sergiobargio1

    спасибо за высказанное мнение, Valet. Замечания справедливые. Торопился в промежутках между текучкой, публикация сырая. Постараюсь найти время оформить.

    EliopReal, меня тоже доставала аналогичная проблема. Когда-то так же использовал x-starter, затем тоже подсел на «рутинную вручную». Вчера немножко времени появилось, поюзал про мгновенные снимки — убедился что у меня такой возможности, увы, нет.

    Reply ↓
  4. Kamikadze

    с Sql не работал, по-этому не очень понятно где нужно писать эти команды…. 🙁

    Reply ↓
  5. sergiobargio1

    Kamikadze, необходимо в план обслуживания перетащить элемент: Задача «Выполнение инструкции T-SQL»

    затем правой кнопкой кликнуть, выбрать в появившемся контекстном меню «изменить» и вставить код

    Reply ↓
  6. klel

    Спасибо за информацию

    Reply ↓
  7. maverick76

    Тема интересная, описание…SQL рулит

    Reply ↓

Leave a Comment

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