Настройка сжатия резервных копий (Backup Compression) в SQL Server
Отсутствие компрессии бэкапов на серверах СУБД приводит к критическим инфраструктурным издержкам:
- Резервные копии занимают терабайты дискового пространства на СХД и бэкап-серверах;
- Процесс создания бэкапа утилизирует 100% пропускной способности дисковой подсистемы (Storage Bottleneck), замедляя работу пользователей 1С;
- Сетевые каналы перегружаются при передаче несжатых
.bakфайлов на удаленные площадки Disaster Recovery.
1. Включение сжатия резервных копий по умолчанию на уровне экземпляра
Активируйте глобальную опцию сервера через sp_configure:
USE [master];
GO
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'backup compression default', 1;
RECONFIGURE;
GO2. Создание сжатого бэкапа в T-SQL
Явное указание директивы COMPRESSION в запросе (переопределяет глобальную настройку):
BACKUP DATABASE [ERP_1C]
TO DISK = N'E:\Backup\ERP_1C_Compressed.bak'
WITH COMPRESSION, CHECKSUM, STATS = 10;3. Оценка эффективности коэффициента сжатия
Запрос для анализа степени сжатия существующих резервных копий в истории msdb:
SELECT
database_name,
backup_start_date,
backup_size / 1048576.0 AS OriginalSize_MB,
compressed_backup_size / 1048576.0 AS CompressedSize_MB,
CAST((backup_size / compressed_backup_size) AS DECIMAL(5,2)) AS CompressionRatio
FROM msdb.dbo.backupset
WHERE database_name = 'ERP_1C'
ORDER BY backup_start_date DESC;4. Балансировка нагрузки на процессор (Resource Governor)
Если сжатие бэкапа перегружает CPU в рабочее время, ограничьте поток бэкапа через Resource Governor:
-- Ограничение пула ресурсов бэкапа до максимум 30% CPU
ALTER WORKLOAD GROUP [GroupBackup] WITH (IMPORTANCE = LOW);
ALTER RESOURCE POOL [PoolBackup] WITH (MAX_CPU_PERCENT = 30);
ALTER RESOURCE GOVERNOR RECONFIGURE; Частые вопросы (FAQ)
Почему сжатие бэкапа ускоряет процесс резервного копирования, несмотря на нагрузку на CPU?
В большинстве современных серверов узким горлышком является скорость дискового ввода-вывода (I/O). Сжатие уменьшает объем записываемых на диск мегабайт в 3-6 раз, поэтому выигрыш во времени сброса на диск многократно превышает микросекундные затраты CPU на компрессию.
Поддерживается ли Backup Compression в версии SQL Server Standard?
Да, начиная с SQL Server 2008 R2, сжатие резервных копий официально поддерживается и в редакции Standard (ранее было доступно только в Enterprise).
Сжимаются ли базы данных, зашифрованные с помощью TDE (Transparent Data Encryption)?
Начиная с SQL Server 2016 SP1, сжатие TDE-баз поддерживается, но для этого в команде BACKUP необходимо явно указать параметр MAXTRANSFERSIZE >= 65536, иначе степень сжатия будет близка к нулю.
Можно ли восстановить сжатый бэкап на сервере, где опция backup compression default отключена?
Да. SQL Server автоматически распознает сжатый формат файла .bak и выполняет декомпрессию 'на лету' вне зависимости от параметров целевого сервера.