Назад | Перейти на главную страницу

Полное / дифференциальное резервное копирование - что используется для определения содержимого дифференциальной резервной копии?

Скажем, у меня есть база данных SQL Server 2005 MyDB (простое восстановление), в которой я делаю полную резервную копию в воскресенье, а дифференциальную - через ночь.

BACKUP DATABASE [MyDB] TO DISK = N'c:\Database Backups\MyDB\MyDB_Full.bak'
    WITH NOFORMAT, INIT, NAME = N'MyDB.BAK', SKIP, NOREWIND, NOUNLOAD, STATS =
    10

и

BACKUP DATABASE [MyDB] TO DISK = N'c:\Database Backups\MyDB\MyDB_Diff.bak'
    WITH NOINIT, DIFFERENTIAL, NAME= 'MyDB.BAK', STATS= 10

Что использует процесс дифференциального резервного копирования, чтобы решить, какие данные будут резервироваться в дифференциальные ночи? Нужен ли ему файл mydb_full.bak для работы?

Если бы я хотел сэкономить место на диске, могу ли я заархивировать файл mydb_full.bak в файл .zip после его создания, не оказывая отрицательного воздействия на разностные резервные копии, и если мне нужно восстановить, просто разархивируйте полную резервную копию перед запуском?

Нет - дифференциальные резервные копии не используют сам файл полной резервной копии в качестве ссылки. Вы можете (и должны!) Безопасно переместить полный дамп резервной копии на другую машину или что угодно.

SQL Server хранит внутри битовую карту грязных экстентов (части базы данных, которые изменились с момента последней полной резервной копии), и когда вы запускаете дифференциальную резервную копию, он обращается к битовой карте и записывает только эти измененные части базы данных в резервную копию.

Я просто провел быструю проверку, сначала создав полную резервную копию одной из моих тестовых баз данных, удалив ее, а затем запустив дифференциальную резервную копию. К моему удивлению, дифференциальное резервное копирование прошло нормально, поэтому я не думаю, что он удаляет сам последний файл полной резервной копии.

Так что похоже, что вы сможете без проблем заархивировать свои полные резервные копии. Мне любопытно услышать, где именно он определяет начальную точку для дифференциального резервного копирования, поэтому я надеюсь, что кто-то сможет нас просветить.