Резервные копии моментальных снимков файлов базы данных в Azure

Область применения: SQL Server

Резервное копирование файлов SQL Server использует моментальные снимки Azure для обеспечения почти мгновенного резервного копирования и быстрого восстановления файлов базы данных, хранящихся с помощью Хранилище BLOB-объектов Azure. Это позволяет упростить политики архивации и восстановления политик. Дополнительные сведения о сохранении файлов базы данных с помощью Хранилища BLOB-объектов Azure см. в статье Файлы данных SQL Server в Microsoft Azure.

Схема, объясняющая архитектуру резервного копирования моментальных снимков.

Уже есть учетная запись Azure? Посетите SQL Server в Azure Виртуальные машины, чтобы развернуть виртуальную машину с помощью SQL Server, уже установленной.

Использование моментальных снимков Azure для резервного копирования файлов базы данных, хранящихся в Azure

Что такое резервное копирование моментальных снимков файлов SQL Server

Резервная копия моментальных снимков файлов состоит из набора моментальных снимков Azure BLOB-объектов, содержащих файлы базы данных, а также файла резервной копии, содержащего указатели на эти снимки файлов. Каждый моментальный снимок файла хранится в контейнере с базовым BLOB-объектом. Вы можете настроить запись файла резервной копии на URL-адрес, диск или ленту. Рекомендуется выполнять резервное копирование на URL-адрес. Дополнительные сведения о резервном копировании см. в статье BACKUP и резервном копировании ПО URL-адресу, см. в статье SQL Server Backup to URL-адрес.

Схема архитектуры функции моментального снимка.

При удалении базового большого двоичного объекта резервный набор данных становится недействительным, поэтому удаление BLOB-объекта, содержащего снимки файлов, заблокировано (однако вы можете явно выбрать удаление BLOB-объекта со всеми моментальными снимками файлов). Кроме того, удаление базы данных или файла данных не приводит к удалению базового большого двоичного объекта или любого из его снимков файлов. Удаление файла резервной копии также не приводит к удалению снимков файлов в резервном наборе данных. Чтобы удалить резервный набор моментальных снимков файлов, используйте системную sys.sp_delete_backup хранимую процедуру.

Полное резервное копирование базы данных. При выполнении полного резервного копирования базы данных с помощью моментальных снимков файлов создается моментальный снимок Azure всех файлов данных и журналов, из которых состоит база данных; формируется цепочка резервных копий журнала транзакций, и сведения о расположении снимков файлов записываются в файл резервной копии.

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

Внимание

После первоначального полного резервного копирования, необходимого для формирования цепочки резервных копий журнала транзакций (которая может быть резервной копией моментальных снимков файлов), останется только создать резервные копии журнала транзакций, поскольку каждый резервный набор данных моментальных снимков файлов журнала содержит снимки всех файлов базы данных и может использоваться для восстановления журнала или базы данных. После первоначального полного резервного копирования базы данных вам не нужны дополнительные полные или разностные резервные копии, так как Хранилище BLOB-объектов Azure обрабатывает различия между каждым моментальным снимком файла и текущим состоянием базового BLOB-объекта для каждого файла базы данных.

Примечание.

Руководство по использованию SQL Server с Microsoft Хранилище BLOB-объектов Azure см. в руководстве по использованию Microsoft Хранилище BLOB-объектов Azure с базами данных SQL Server.

Восстановление с помощью резервных копий моментальных снимков файлов

Поскольку каждый резервный набор данных снимков файлов содержит моментальные снимки всех файлов базы данных, для восстановления потребуется не более двух смежных резервных наборов данных снимков файлов. Это верно независимо от того, создан ли резервный набор данных при полном резервном копировании базы данных или резервном копировании журнала. Этот процесс сильно отличается от процесса восстановления с помощью традиционного потокового резервного копирования. В ходе традиционного потокового резервного копирования процесс восстановления требует использования всей цепочки резервных наборов данных: полной резервной копии, разностной резервной копии и одной или нескольких резервных копий журнала транзакций. Этап восстановления в рамках этого процесса остается неизменным независимо от того, основан ли процесс на использовании резервной копии моментальных снимков файлов или набора данных потокового резервного копирования.

До точки во времени любого резервного набора данных . Для выполнения операции RESTORE DATABASE для восстановления базы данных на момент времени определенного резервного набора данных моментальных снимков файлов требуется только такой резервный набор данных, а также собственно базовые BLOB-объекты. Поскольку для выполнения операции RESTORE DATABASE можно использовать резервный набор данных моментальных снимков файлов журнала транзакций, как правило, именно этот набор данных используется вместо полной резервной копии базы данных. В конце этой статьи показан пример, демонстрирующий этот метод.

До точки во времени между двумя резервными наборами данных моментальных снимков файлов . Для выполнения операции RESTORE DATABASE для восстановления базы данных до определенной точки во времени между двумя резервными наборами данных смежных журналов транзакций требуются только два этих набора данных (до и после точки во времени, до которой предполагается восстановить базу данных). Для этого необходимо выполнить операцию RESTORE DATABASE с аргументом WITH NORECOVERY с использованием более раннего резервного набора данных моментальных снимков файлов журнала транзакций и операцию RESTORE LOG с аргументом WITH RECOVERY с использованием более позднего резервного набора данных журнала транзакций, а затем использовать аргумент STOPAT, чтобы указать момент времени для остановки восстановления из резервной копии журнала транзакций. В конце этой статьи показан пример, демонстрирующий этот метод.

Обслуживание резервной копии файлов

Удаление резервного набора данных моментальных снимков файлов. Перезаписать резервный набор данных моментальных снимков файлов с помощью аргумента FORMAT невозможно. Использование аргумента FORMAT запрещено, чтобы избежать появления потерянных моментальных снимков файлов, которые были созданы во время первоначального резервного копирования снимков файлов. Чтобы удалить резервный набор моментальных снимков файлов, используйте системную sys.sp_delete_backup хранимую процедуру. Эта хранимая процедура удаляет файл резервной копии и снимки файлов, из которых состоит резервный набор данных. Использование другого способа удаления резервного набора данных моментальных снимков файлов может привести к удалению файла резервной копии без удаления снимков файлов в резервном наборе данных.

Удаление потерянных моментальных снимков файлов резервного копирования. Возможно, у вас были потерянные моментальные снимки файлов, если файл резервной копии был удален без использования sys.sp_delete_backup системной хранимой процедуры или если база данных или файл базы данных был удален во время удаления больших двоичных объектов, содержащих базу данных или файл базы данных, имел связанные с ними моментальные снимки файлов резервных копий. Чтобы определить моментальные снимки файлов, которые могут быть потерянными, используйте системную sys.fn_db_backup_file_snapshots функцию для перечисления всех моментальных снимков файлов файлов базы данных. Чтобы обнаружить снимки файлов, которые входят в определенный резервный набор данных моментальных снимков файлов, используйте системную хранимую процедуру RESTORE FILELISTONLY. Затем можно использовать системную sys.sp_delete_backup_file_snapshot хранимую процедуру, чтобы удалить отдельный моментальный снимок файла резервной копии, который был потерянным. Примеры использования этой системной функции и эти системные хранимые процедуры приведены в конце этой статьи. Дополнительные сведения см. в разделе sp_delete_backup, sys.fn_db_backup_file_snapshots, sp_delete_backup_file_snapshot и RESTORE FILELISTONLY.

Рекомендации и ограничения

Хранилище класса Premium. При использовании хранилища класса Premium применяются указанные ниже ограничения.

Одна учетная запись хранения. Для моментальных снимков файлов и BLOB-объектов назначения необходимо использовать одну учетную запись.

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

Оперативное восстановление. При использовании резервного копирования моментальных снимков файлов невозможно выполнить оперативное восстановление. Дополнительные сведения о оперативном восстановлении см. в разделе "Восстановление в сети" (SQL Server).

Выставление счетов . При использовании резервного копирования моментальных снимков файлов SQL Server по мере изменения данных будет взиматься дополнительная плата. Дополнительные сведения см. в статье Основные сведения о том, как моментальные снимки увеличивают плату.

Архивация . Если требуется архивировать резервную копию моментальных снимков файлов, можно использовать хранилище BLOB-объектов или потоковое резервное копирование. Для архивации в хранилище BLOB-объектов скопируйте моментальные снимки в резервном наборе данных моментальных снимков файлов в отдельные BLOB-объекты. Для архивации в режиме потокового резервного копирования восстановите резервную копию моментальных снимков файлов как новую базу данных, а затем выполните обычное потоковое резервное копирование со сжатием и (или) шифрованием и храните копию в течение любого времени, независимо от базовых BLOB-объектов.

Внимание

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

Резервное копирование базы данных и журнала с помощью резервного копирования моментальных снимков файлов

В этом примере используется резервное копирование моментальных снимков файлов для резервного AdventureWorks2022 копирования примера базы данных по URL-адресу.

-- To permit log backups, before the full database backup, modify the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE AdventureWorks2022  
   SET RECOVERY FULL;  
GO  
-- Back up the full AdventureWorks2022 database.  
BACKUP DATABASE AdventureWorks2022   
TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak'   
WITH FILE_SNAPSHOT;  
GO  
-- Back up the AdventureWorks2022 log using a time stamp in the backup file name.  
DECLARE @Log_Filename AS VARCHAR (300);  
SET @Log_Filename = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_Log_'+   
REPLACE (REPLACE (REPLACE (CONVERT (VARCHAR (40), GETDATE (), 120), '-','_'),':', '_'),' ', '_') + '.trn';  
BACKUP LOG AdventureWorks2022  
 TO URL = @Log_Filename WITH FILE_SNAPSHOT;  
GO  

Восстановление из резервной копии моментальных снимков файлов SQL Server

В следующем примере база данных восстанавливается AdventureWorks2022 с помощью набора резервных копий файлов журнала транзакций и показана операция восстановления. Обратите внимание, что базу данных можно восстановить из одного резервного набора данных моментальных снимков файлов журнала транзакций.

RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_16_00_00.trn'   
WITH RECOVERY, REPLACE;  
GO  

Восстановление из резервной копии моментальных снимков файлов SQL Server до точки во времени

В следующем примере выполняется восстановление AdventureWorks2022 состояния в указанный момент времени с помощью двух наборов резервных копий файлов журнала транзакций и показана операция восстановления.

RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_16_00_00.trn'   
WITH NORECOVERY,REPLACE;  
GO   
  
RESTORE LOG AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_18_00_00.trn'   
WITH RECOVERY,STOPAT = 'May 18, 2015 5:35 PM';  
GO  

Удаление резервного набора данных моментальных снимков файлов базы данных

Чтобы удалить резервный набор моментальных снимков файлов, используйте системную sys.sp_delete_backup хранимую процедуру. Укажите имя базы данных, чтобы система проверяла, действительно ли заданный резервный набор данных моментальных снимков файлов является резервной копией для указанной базы данных. Если имя базы данных не указано, заданный резервный набор данных вместе со снимками файлов будет удален без проверки. Дополнительные сведения см. в sp_delete_backup.

Предупреждение

Попытка удалить резервный набор данных моментальных снимков файлов другим способом, например с помощью портала управления Microsoft Azure или средства просмотра хранилищ Azure в SQL Server Management Studio, не приведет к удалению снимков файлов в резервном наборе данных. Эти средства удаляют только сам файл резервной копии, содержащий указатели на снимки файлов в резервном наборе данных моментальных снимков. Чтобы определить моментальные снимки резервных копий, оставшиеся после неправильного удаления файла резервной копии, используйте системную функцию, а затем используйте sys.fn_db_backup_file_snapshots sys.sp_delete_backup_file_snapshot системную хранимую процедуру для удаления отдельного моментального снимка файла резервной копии.

В следующем примере демонстрируется удаление указанного резервного набора данных снимков файлов, включая файл резервной копии и снимки файлов, из которых состоит указанный резервный набор данных.

EXEC sys.sp_delete_backup 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak', 'AdventureWorks2022' ;  
GO  

Просмотр файлов моментальных снимков резервной копии базы данных

Чтобы просмотреть моментальные снимки файлов базового большого двоичного объекта для каждого файла базы данных, используйте системную sys.fn_db_backup_file_snapshots функцию. Эта системная функция позволяет просматривать все моментальные снимки файлов резервных копий каждого базового большого двоичного объекта для базы данных, хранящейся с помощью Хранилище BLOB-объектов Azure. Основной вариант использования этой функции заключается в определении моментальных снимков резервных копий базы данных, оставшихся при удалении файла резервного копирования для резервного снимка файлов с помощью механизма, отличного от sys.sp_delete_backup системной хранимой процедуры. Чтобы определить моментальные снимки резервных копий, которые являются частью нетронутых резервных наборов резервных копий, используйте RESTORE FILELISTONLY системную хранимую процедуру для перечисления моментальных снимков файлов, принадлежащих каждому файлу резервного копирования. Дополнительные сведения см. в разделе sys.fn_db_backup_file_snapshots и RESTORE FILELISTONLY.

Следующий пример кода возвращает список всех резервных копий моментальных снимков файлов для указанной базы данных.

--Either specify the database name or set the database context  
USE AdventureWorks2022  
select * from sys.fn_db_backup_file_snapshots (null) ;  
GO  
select * from sys.fn_db_backup_file_snapshots ('AdventureWorks2022') ;  
GO  

Удаление отдельного моментального снимка файла резервной копии базы данных

Чтобы удалить отдельный моментальный снимок файла резервной копии базового большого двоичного объекта базы данных, используйте sys.sp_delete_backup_file_snapshot системную хранимую процедуру. Основным вариантом использования этой системной хранимой процедуры является удаление потерянных файлов-моментальных снимков файлов, оставшихся после удаления файла резервной копии с помощью метода, отличного sys.sp_delete_backup от системной хранимой процедуры. Дополнительные сведения см. в sp_delete_backup_file_snapshot.

Предупреждение

Если удалить отдельный моментальный снимок файла, который является частью резервного набора данных снимков файлов, такой резервный набор данных становится недействительным.

В следующем примере демонстрируется удаление указанной резервной копии снимков файлов. URL-адрес указанной резервной копии был получен с помощью системной sys.fn_db_backup_file_snapshots функции.

EXEC sys.sp_delete_backup_file_snapshot N'AdventureWorks2022', N'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022Data.mdf?snapshot=2015-05-29T21:31:31.6502195Z';  
GO  

Следующие шаги