Как настроить инкрементное и разностное резервное копирование базы данных MS SQL для 1С?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Для обеспечения сохранности данных в системах на базе 1С:Предприятие критически важно настроить регулярное резервное копирование. Использование только полных бэкапов (Full Backup) часто неэффективно: они занимают много места и требуют значительного времени на выполнение. Разберем, как реализовать стратегию инкрементного (в терминах MS SQL — журналов транзакций) и разностного (Differential) копирования.

Понятия: разностный бэкап против бэкапа журнала транзакций

Прежде всего, проанализируем разницу в подходах, так как в среде MS SQL Server термин «инкрементный бэкап» официально не используется, но его роль выполняют другие механизмы:

  1. Разностный бэкап (Differential Backup): фиксирует все изменения, произошедшие с момента создания последнего полного бэкапа. Его преимущество в том, что для восстановления базы вам понадобится всего два файла: последний полный бэкап и последний разностный. Однако объем разностного бэкапа растет с каждым разом по мере накопления изменений.
  2. Бэкап журнала транзакций (Transaction Log Backup): сохраняет только те операции, которые были выполнены с момента последнего бэкапа любого типа (лога или полного). Это и есть аналог инкрементного бэкапа. Они выполняются мгновенно и занимают минимум места, но для восстановления данных на конкретный момент времени вам потребуется полная цепочка всех файлов логов с момента последнего полного бэкапа.

Важно: для работы с журналами транзакций ваша база данных должна находиться в модели восстановления FULL (Полная). В модели SIMPLE (Простая) бэкап логов невозможен.

Настройка через SQL Server Management Studio (SSMS)

Рассмотрим самый доступный и бесплатный способ настройки автоматизации — использование планов обслуживания (Maintenance Plans). Это стандартный инструмент в составе SSMS, который позволяет настроить регламент без написания сложных скриптов.

Выполним следующие шаги для настройки:

  1. Запустим SQL Server Management Studio и подключимся к нашему серверу.
  2. В дереве объектов перейдем в раздел Management (Управление) и найдем Maintenance Plans (Планы обслуживания).
  3. Нажмем правой кнопкой мыши и выберем Maintenance Plan Wizard (Мастер планов обслуживания).
  4. В мастере зададим имя плана, например, "Daily_Backup".
  5. Выберем задачи: Check Database Integrity (Проверка целостности), Back Up Database (Full), Back Up Database (Differential) и Maintenance Cleanup Task (Очистка старых файлов).
  6. Настроим расписание:
    • Полный бэкап — раз в неделю (например, в воскресенье ночью).
    • Разностный бэкап — каждую ночь в будни.
    • Бэкап журналов транзакций (если требуется) — каждый час в течение рабочего дня.
  7. В параметрах задач укажем путь к папке бэкапов и обязательно включим опцию Compress backup (Сжимать бэкап), чтобы значительно сэкономить место на диске.

Особенности работы с версией SQL Server Express

Проанализируем ситуацию, если у вас установлена бесплатная версия SQL Express. В ней отсутствует компонент SQL Server Agent, поэтому стандартные планы обслуживания не работают. В этом случае мы рекомендуем использовать командную строку и системный планировщик задач Windows.

Создадим простой скрипт (например, backup.sql) для выполнения разностного копирования:


BACKUP DATABASE [Имя_Вашей_Базы] 
TO DISK = N'C:\Backups\Base_Diff.bak' 
WITH DIFFERENTIAL, NOFORMAT, NOINIT, 
NAME = N'Differential Backup', 
SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10;
GO

Для автоматизации создадим .bat файл, который будет запускать этот скрипт через утилиту sqlcmd:

sqlcmd -S Имя_Сервера -i "C:\Scripts\backup.sql"

После этого добавим запуск этого bat-файла в «Планировщик заданий Windows» с нужной периодичностью.

Использование специализированного ПО для 1С

Если вы хотите получить более гибкий инструмент с понятным интерфейсом, рассмотрим сторонние программы, которые часто используются в паре с 1С:

Практические рекомендации по обслуживанию

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

Во-первых, всегда используйте проверку бэкапа после записи. В настройках плана обслуживания или в скрипте T-SQL добавьте опцию CHECKSUM и CONTINUE_AFTER_ERROR для контроля целостности записываемых данных.

Во-вторых, следите за размером журнала транзакций (LDF-файл). Если вы перевели базу в модель FULL, но не делаете регулярные бэкапы журналов транзакций, файл лога будет бесконечно расти, пока не займет всё место на диске. Бэкап лога «обрезает» его, помечая неиспользуемое пространство как свободное для повторного использования.

В-третьих, организуйте хранение копий на разных физических носителях. Хорошим тоном считается правило «3-2-1»: 3 копии данных, на 2 разных типах носителей, 1 копия — вне офиса (в облаке).

Выясним причину, почему разностные бэкапы могут быть удобнее ежедневных полных. Если база данных весит 500 Гб, то делать полный бэкап ежедневно накладно для дисковой подсистемы. Разностный бэкап за день может составить всего 10–20 Гб, что существенно снижает нагрузку на сеть и диски при копировании архивов в хранилище.

Заключение

Мы проанализировали основные способы настройки инкрементального (разностного) копирования. Выбор метода зависит от ваших технических возможностей и бюджета. Для крупных баз 1С оптимальной схемой будет: еженедельный полный бэкап, ежедневный разностный и ежечасный бэкап журналов транзакций. Это позволит восстановить данные с точностью до минут, не перегружая при этом серверную инфраструктуру.

← На главную