Резервное копирование на вторичных репликах AlwaysOn (Backup Preferences)
Создание бэкапов на основном узле высоконагруженной системы приводит к снижению производительности:
- Просадка скорости проведения документов 1С в моменты снятия Full и Log бэкапов;
- Дисковый контроллер основного сервера перегружен параллельным чтением страниц для архивации;
- Необходимость переноса тяжелых процессов резервного копирования на вторичный резервный сервер (Offloading Backups).
1. Настройка приоритетов резервного копирования (Backup Preferences)
Управление политикой выбора ноды для бэкапа в свойствах группы доступности:
ALTER AVAILABILITY GROUP [AG_1C]
MODIFY REPLICA ON N'SQL-NODE1' WITH (BACKUP_PRIORITY = 30);
ALTER AVAILABILITY GROUP [AG_1C]
MODIFY REPLICA ON N'SQL-NODE2' WITH (BACKUP_PRIORITY = 80);
-- Установка приоритета: Только на вторичной реплике (Secondary only)
ALTER AVAILABILITY GROUP [AG_1C]
SET (AUTOMATED_BACKUP_PREFERENCE = SECONDARY_ONLY);
GOВарианты AUTOMATED_BACKUP_PREFERENCE:
- SECONDARY_ONLY: Бэкапы снимаются только со вторичных нод. Если вторичные ноды недоступны, бэкап на мастере выполняться не будет;
- SECONDARY: Предпочитать вторичные ноды, но если они лежат — сделать бэкап на мастере;
- PRIMARY: Бэкапы делаются всегда на основном узле;
- NONE: Приоритеты игнорируются.
2. Использование системной функции проверки preferred replica в T-SQL скриптах
Оберните скрипт бэкапа в каждом джобе SQL Agent на всех нодах кластера:
IF sys.fn_hadr_backup_is_preferred_replica('ERP_1C') = 1
BEGIN
-- На вторичной реплике Full бэкап возможен ТОЛЬКО с параметром COPY_ONLY
BACKUP DATABASE [ERP_1C]
TO DISK = N'E:\Backup\ERP_1C_Secondary.bak'
WITH COPY_ONLY, COMPRESSION, CHECKSUM, STATS = 10;
END
ELSE
BEGIN
PRINT 'This replica is not preferred for backup.';
END
GO3. Особенности бэкапа Transaction Log на вторичной реплике
Бэкап лога транзакций на вторичной реплике выполняется штатно без COPY_ONLY:
IF sys.fn_hadr_backup_is_preferred_replica('ERP_1C') = 1
BEGIN
BACKUP LOG [ERP_1C]
TO DISK = N'E:\Backup\Log\ERP_1C_Log.trn'
WITH COMPRESSION, CHECKSUM;
END Частые вопросы (FAQ)
Можно ли делать обычный Full Backup (без COPY_ONLY) на вторичной реплике AlwaysOn?
Нет. Архитектура AlwaysOn запрещает создание стандартного Full и Differential бэкапа на вторичных репликах, так как они не могут модифицировать DCM битовую карту базы. Разрешены только FULL WITH COPY_ONLY и бэкапы логов (BACKUP LOG).
Усекает ли BACKUP LOG на вторичной реплике журнал транзакций на мастере?
Да. При выполнении бэкапа лога на вторичном узле информация синхронизируется с первичной репликой, и неактивные VLF усекаются на всех узлах группы.
Поддерживаются ли дифференциальные бэкапы (Diff) на вторичных репликах?
Нет, Differential бэкапы на вторичных нодах AlwaysOn не поддерживаются ни в каком виде. Их можно снимать только на первичной реплике.
Где сохранять бэкапы, если джобы настроены на обоих узлах?
Сохраняйте бэкапы в единую сетевую папку (UNC Path, например, \\backup-storage\mssql\), доступную для сервисных учетных записей обоих серверов.