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

29.05.21

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
BackupFileProcessing.zip
.zip 13,55Kb
3
3 Скачать (5 SM) Купить за 3 050 руб.

Предисловие

Компания использует в работе около 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

См. также

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

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

6000 руб.

06.11.2012    73045    627    45    

86

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

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

1200 руб.

03.09.2014    15795    21    6    

27

Архивирование (backup) Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Платные (руб)

Расширение поможет настроить резервное копирование баз SQL в стандартный файл выгрузки баз 1С (*.dt).

2400 руб.

27.08.2024    1267    1    5    

1

HighLoad оптимизация Администрирование СУБД Архивирование (backup) Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Бэкап в Postgres состоит из набора граблей, которые нужно обойти для успешного восстановления. Они заложены в самых неожиданных местах от предмета резервного копирования (база или кластер) до структуры каталогов. Один неверный шаг и восстановление будет невозможным. Почему нельзя было сделать проще, как в MS SQL или Oracle? Почему бэкап в Postgres оставляет впечатление чьей-то лабораторной работы? Статья адресована прежде всего специалистам 1С, избалованным комфортом в MS SQL, в суровых буднях импортозамещения на Postgres.

13.08.2024    3142    1CUnlimited    9    

5

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

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

04.12.2023    9750    n_mezentsev    15    

27

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

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

07.10.2022    29530    sapervodichka    37    

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