Поэтапное восстановление баз MSSQL: Piecemeal Restore файловых групп
- Критический сбой одного из LUN / дисков с вторичной файловой группой (Secondary Filegroup) в терабайтной базе.
- Недопустимость длительного простоя (RTO) для ввода основной операционной деятельности предприятия в строй.
- Необходимость поднять первичную файловую группу
PRIMARYв режим Online, пока остальные файловые группы восстанавливаются.
1. Восстановление первичной файловой группы (Partial Restore)
Ключевое слово PARTIAL указывает на старт цепочки поэтапного восстановления:
-- 1. Восстановление PRIMARY файловой группы из полного бэкапа
RESTORE DATABASE [LargeEnterpriseDb]
FILEGROUP = 'PRIMARY'
FROM DISK = N'D:\Backups\LargeDb_Full.bak'
WITH PARTIAL, NORECOVERY, REPLACE;
-- 2. Применение последнего дифференциального бэкапа для PRIMARY (если есть)
RESTORE DATABASE [LargeEnterpriseDb]
FILEGROUP = 'PRIMARY'
FROM DISK = N'D:\Backups\LargeDb_Diff.bak'
WITH NORECOVERY;
-- 3. Накат цепочки логов и ввод PRIMARY в режим ONLINE
RESTORE LOG [LargeEnterpriseDb]
FROM DISK = N'D:\Backups\LargeDb_Log1.trn'
WITH RECOVERY;На этом этапе база данных переходит в состояние ONLINE, а невосстановленные вторичные файловые группы получают статус RESTORING.
2. Фоновое восстановление вторичных файловых групп (Secondary Filegroups)
-- Восстановление файловой группы с историческими данными (например, FG_Archive)
RESTORE DATABASE [LargeEnterpriseDb]
FILEGROUP = 'FG_Archive'
FROM DISK = N'D:\Backups\LargeDb_Archive_FG.bak'
WITH NORECOVERY;
-- Накат логов до текущей точки согласованности базы
RESTORE LOG [LargeEnterpriseDb]
FROM DISK = N'D:\Backups\LargeDb_Log1.trn'
WITH RECOVERY;3. Проверка статуса всех файлов и файловых групп
SELECT
df.name AS LogicalFileName,
df.physical_name,
df.state_desc AS FileState,
fg.name AS FilegroupName
FROM sys.database_files df
LEFT JOIN sys.filegroups fg ON df.data_space_id = fg.data_space_id; Частые вопросы (FAQ)
В чем главное преимущество Piecemeal Restore для 1С-баз?
Оно позволяет за несколько минут поднять ядро базы данных (Primary Filegroup с конфигурацией и оперативными таблицами), дав пользователям возможность работать, пока гигабайты прикрепленных файлов и архивов восстанавливаются в фоне.
Что произойдет, если пользователь попытается прочитать данные из файловой группы в статусе RESTORING?
Запрос завершится ошибкой 'The query processor could not produce a query plan because a table or index is residing in a filegroup that is offline or currently restoring'.
Работает ли Piecemeal Restore в редакции SQL Server Standard?
В Standard Edition поддерживается только оффлайн-восстановление файловых групп (база должна быть отключена). Онлайн-восстановление вторичных файловых групп на лету доступно только в SQL Server Enterprise.
Обязательно ли накатывать все журналы транзакций на каждую вторичную группу?
Да. Файловая группа не может быть переведена в статус Online, пока ее LSN не будет синхронизирован с текущим LSN первичной файловой группы базы данных.