Методика многоуровневого резервного копирования SQL баз данных 1С (и не только)

29.05.21

База данных - Архивирование (backup)

Описание методики резервного копирования баз данных MS SQL Server по схеме дед-отец-сын и набор скриптов для ее реализации. Разработана для баз 1С, но подходит для любых.

Скачать исходный код

Наименование Файл Версия Размер
BackupFileProcessing.zip
.zip 13,55Kb
3
.zip 13,55Kb 3 Скачать

Предисловие

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

Для решения этих задач и была разработана данная методика, работающая как-то так:

  • Существует два сервера, один для первичных (текущих) копий, другой для длительного хранения;
    • На первом сервере есть каталог, доступный по сети учетным записям, от имени которых выполняются серверы SQL; Этот сервер может быть как Windows, так и Linux с Samba, и любой NAS - от него требуется лишь предоставить в сеть каталог с достаточным пространством и возможность правильно настроить безопасность.
    • На втором (только Windows) служба Server запрещена совсем, для дополнительной безопасности (файлы по сети недоступны)
  • Для каждой базы данных существует свой каталог резервных копий, свое задание агента SQL и свое время запуска;
  • Резервная копия базы данных создается средствами SQL
    • Если хранилища бэкапов доступны серверу SQL по тонкому каналу, копия делается в локальный каталог, чтобы сократить время операции резервного копирования, затем программой robocopy копируется в первичное хранилище;
    • Если сервер и хранилище в быстрой сети, копия создается прямо в каталоге на первичном хранилиище;
  • Когда созданная копия оказалась целиком в первичном хранилище, сервер SQL через powershell и службу WinRM обращается к серверу долговременного хранения и дает ему задание забрать только что созданный файл. Для получения файла запускается скрипт Powershell, лежащий локально в каталоге на этом сервере. Скрипт копирует файл в каталог базы данных в указанную в параметрах папку, после чего обрабатывает все остальные файлы в этой папке, оставляя несколько дневных копий, несколько недельных и несколько месячных. Количество копий каждого уровня и еще некоторые настройки можно задавать в файле, лежащем в каждом каталоге БД;
  • Если настроена служба DatabaseMail, при ошибке задания отправляется уведомление оператору SQL.

Систему можно запустить на любой редакции SQL Server. Если отсутствует агент SQL, вместо него используется планировщик задач Windows, который запускает файл CMD, выполняющий те же операции при помощи sqlcmd и powershell.
Подходит не только для баз данных 1С, мы используем для других тоже, в том числе на редакциях Express.

Чтобы запустить всю эту кухню, необходимо:

  • Настроить сервер № 2:
    • Создать каталог C:\sqlagent\, положить в него скрипты BackupFileProcessing.ps1 и PreparePSSessionConfiguration.ps1
      Если не нравится каталог, можно положить куда угодно, изменив путь в коде (он настраивается в файле AddDailyBackupJobV2.sql)
    • запретить службу Server
    • разрешить WinRM, настроить безопасность WinRM при помощи скрипта, входящего в архив - PreparePSSessionConfiguration.ps1
    • подготовить каталог для хранения бэкапов (каталогов может быть несколько, для разных баз можно задавать их в параметрах вызова скрипта BackupFileProcessing.ps1
  • Настроить сервер № 1:
    • Создать папку, открыть к ней доступ по сети, предоставить права на запись учетным записям серверов SQL.
  • Настроить сервер SQL:
    • Для всех редакций, кроме Express:
      • Если хотите получать оповещения на почту, настроить Database Mail;
      • открыть в SSMS файл AddDailyBackupJobV2.sql, настроить параметры в начале скрипта (имя базы данных, время запуска, и т.п.), выполнить скрипт, он создаст задание агента, на этом настройка закончена.
    • Для редакций Express:
      • выбрать или создать каталог, в который положить файлы SQLBackup.cmd и SQLBackup.sql;
      • Отредактировать файл SQLBackup.cmd, вписав туда имя вторичного сервера (возможно, позже сделаю поудобнее, добавлю в параметры вызова);
      • Создать задание в планировщике Windows (пример параметров запуска в файле Start.cmd)

Эпилог

Разрабатывалось для нужд своей компании. Публикуется скорее для себя, чтобы потом вспомнить, что делалось и зачем. В коде есть комментарии, надеюсь, они помогут тем, кто захочет это внедрить. Если кому-то захочется ругаться - прошу воздержаться, просто не качайте и не используйте. Времени на ответы мало, захожу редко.
Писалось, тестировалось и используется на SQL Server 2016. По моим представлениям, должно работать от 2012 до 2019, на более развернутое тестирование нет времени.

Последние версии файлов доступны тут. Поблагодарить автора можно, скачав файл из публикации.

SQL backup

См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

21600 руб.

15.05.2017    42685    10    24    

38

BackUPv8 - система резервного копирования баз 1С

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Автоматическое создание копий файловых и серверных информационных баз 1С Предприятие 8 и размещение копий в облаке Яндекс.Диск, локальном или сетевом ресурсе.

1200 руб.

03.09.2014    14859    15    6    

19

Автоматическое резервное копирование любой клиент-серверной базы 1С в формате DT с удалением сеансов, архивацией, изменением расширения (8.3.14+, расширение)

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней.

6000 руб.

06.11.2012    70342    622    44    

80

Резервное копирование журнала транзакций, наконец-то!

Архивирование (backup) Администрирование СУБД Россия Бесплатно (free)

Постараюсь объяснить, зачем нужно резервное копирование именно журнала транзакций, а не только базы данных, и почему я словно сбросил груз, настроив его - как, покажу, естественно. Кстати, будут скрипты T-SQL (с подробными комментариями) - отличный способ сделать администрирование базы более уютным.

04.12.2023    6399    n_mezentsev    15    

27

Резервное копирование и восстановление 1С баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.

07.10.2022    20852    sapervodichka    36    

143

Архивирование базы в dt и дамп postgres

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Захотелось клиентам выгрузку архива баз, и выгрузку в дт, готовые скрипты с сети не заработали. Может, кому-то поможет. Релиз 8.3.18.1741.

1 стартмани

25.08.2022    4840    2    Gnom-Gluck    6    

7
Оставьте свое сообщение