Для обеспечения сохранности данных в системах на базе 1С:Предприятие критически важно настроить регулярное резервное копирование. Использование только полных бэкапов (Full Backup) часто неэффективно: они занимают много места и требуют значительного времени на выполнение. Разберем, как реализовать стратегию инкрементного (в терминах MS SQL — журналов транзакций) и разностного (Differential) копирования.
Прежде всего, проанализируем разницу в подходах, так как в среде MS SQL Server термин «инкрементный бэкап» официально не используется, но его роль выполняют другие механизмы:
Важно: для работы с журналами транзакций ваша база данных должна находиться в модели восстановления FULL (Полная). В модели SIMPLE (Простая) бэкап логов невозможен.
Рассмотрим самый доступный и бесплатный способ настройки автоматизации — использование планов обслуживания (Maintenance Plans). Это стандартный инструмент в составе SSMS, который позволяет настроить регламент без написания сложных скриптов.
Выполним следующие шаги для настройки:
SQL Server Management Studio и подключимся к нашему серверу.Management (Управление) и найдем Maintenance Plans (Планы обслуживания).Maintenance Plan Wizard (Мастер планов обслуживания).Check Database Integrity (Проверка целостности), Back Up Database (Full), Back Up Database (Differential) и Maintenance Cleanup Task (Очистка старых файлов).Compress backup (Сжимать бэкап), чтобы значительно сэкономить место на диске.Проанализируем ситуацию, если у вас установлена бесплатная версия 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С:
Рассмотрим несколько правил, которые помогут избежать потери данных:
Во-первых, всегда используйте проверку бэкапа после записи. В настройках плана обслуживания или в скрипте T-SQL добавьте опцию CHECKSUM и CONTINUE_AFTER_ERROR для контроля целостности записываемых данных.
Во-вторых, следите за размером журнала транзакций (LDF-файл). Если вы перевели базу в модель FULL, но не делаете регулярные бэкапы журналов транзакций, файл лога будет бесконечно расти, пока не займет всё место на диске. Бэкап лога «обрезает» его, помечая неиспользуемое пространство как свободное для повторного использования.
В-третьих, организуйте хранение копий на разных физических носителях. Хорошим тоном считается правило «3-2-1»: 3 копии данных, на 2 разных типах носителей, 1 копия — вне офиса (в облаке).
Выясним причину, почему разностные бэкапы могут быть удобнее ежедневных полных. Если база данных весит 500 Гб, то делать полный бэкап ежедневно накладно для дисковой подсистемы. Разностный бэкап за день может составить всего 10–20 Гб, что существенно снижает нагрузку на сеть и диски при копировании архивов в хранилище.
Мы проанализировали основные способы настройки инкрементального (разностного) копирования. Выбор метода зависит от ваших технических возможностей и бюджета. Для крупных баз 1С оптимальной схемой будет: еженедельный полный бэкап, ежедневный разностный и ежечасный бэкап журналов транзакций. Это позволит восстановить данные с точностью до минут, не перегружая при этом серверную инфраструктуру.