Область применения:
Управляемый экземпляр SQL Azure
В Управляемом экземпляре SQL Azure можно настроить политику долгосрочного хранения резервных копий (LTR). Она позволяет автоматически сохранять резервные копии баз данных в отдельных контейнерах хранилища BLOB-объектов Azure на срок до 10 лет. Затем можно восстановить базу данных с помощью этих резервных копий с помощью портал Azure, Azure CLI и PowerShell.
В следующем разделе показано, как настроить долгосрочное хранение резервных копий, просматривать резервные копии и выполнять восстановление из них в хранилище Azure SQL с помощью портала Azure, PowerShell и Azure CLI.
Необходимые компоненты
Подготовьте среду к работе с Azure CLI.
Подготовьте среду к работе с PowerShell.
Примечание.
В этой статье предусмотрено использование модуля Azure Az PowerShell, который является рекомендуемым модулем PowerShell для взаимодействия с Azure. Чтобы начать работу с модулем Az PowerShell, ознакомьтесь со статьей Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Внимание
Модуль PowerShell Azure Resource Manager (AzureRM) был объявлен устаревшим 29 февраля 2024 г. Все будущие разработки должны использовать модуль Az.Sql. Пользователям рекомендуется выполнить миграцию из AzureRM в модуль Az PowerShell, чтобы обеспечить постоянную поддержку и обновления. Модуль AzureRM больше не поддерживается и не сопровождается. Аргументы команд в модуле Az PowerShell и в модулях AzureRM существенно идентичны. Дополнительные сведения о совместимости см. в статье Знакомство с новым модулем Az PowerShell.
Для Get-AzSqlInstanceDatabaseLongTermRetentionBackup
и Restore-AzSqlInstanceDatabase
, необходимо быть членом одной из следующих ролей:
- роль владельца подписки;
- роль участника Управляемый экземпляр SQL или
- Пользовательская роль со следующими разрешениями:
Microsoft.Sql/locations/longTermRetentionManagedInstanceBackups/read
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionManagedInstanceBackups/read
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/read
Для Remove-AzSqlInstanceDatabaseLongTermRetentionBackup
этого необходимо быть членом одной из следующих ролей:
- роль владельца подписки;
- настраиваемая роль со следующим разрешением: .
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/delete
Разрешения
Чтобы просмотреть и восстановить резервные копии LTR, необходимо быть членом следующих ролей:
- роль владельца подписки;
- роль участника Управляемый экземпляр SQL или
- Пользовательская роль со следующими разрешениями:
Microsoft.Sql/locations/longTermRetentionManagedInstanceBackups/read
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionManagedInstanceBackups/read
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/read
Чтобы удалить резервные копии LTR, необходимо быть членом одной из следующих ролей:
- роль владельца подписки;
- настраиваемая роль со следующим разрешением: .
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/delete
Примечание.
Роль участника Управляемый экземпляр SQL не имеет разрешения на удаление резервных копий LTR.
Разрешения управления доступом на основе ролей Azure (RBAC) могут быть предоставлены в области подписки или группы ресурсов. Однако для доступа к резервным копиям LTR, принадлежащим удаленному экземпляру, разрешение может быть предоставлено только в области подписки этого экземпляра.
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/delete
Создание политик долгосрочного хранения
Вы можете настроить для Управляемого экземпляра SQL хранение автоматически создаваемых резервных копий на срок больший, чем срок хранения для используемого уровня служб.
В портал Azure выберите управляемый экземпляр и выберите "Резервные копии". На вкладке Политики хранения выберите базы данных, для которых нужно задать или изменить политики долгосрочного хранения резервных копий. Эти изменения не будут применяться к остальным базам данных, кроме выбранных.
На панели Настройка политик укажите необходимый срок хранения резервных копий, продолжительность которого может измеряться неделями, месяцами или годами. Выберите для срока хранения значение "0", если долгосрочное хранение резервных копий не нужно.
По завершении нажмите кнопку "Применить".
Внимание
При включении политики долгосрочного хранения резервных копий может потребоваться до 7 дней, чтобы первая резервная копия стала видимой и доступной для восстановления. Дополнительные сведения о периодичности создания резервных копий LTR см. в разделе Долгосрочное хранение резервных копий.
Выполните команду az sql midb show, чтобы получить сведения о базе данных Управляемый экземпляр SQL.
az sql midb show /
--resource-group mygroup /
--managed-instance myinstance /
--name mymanageddb /
--subscription mysubscription
Чтобы создать политику LTR, выполните команду az sql midb ltr-policy set. В следующем примере для еженедельного резервного копирования задается политика долгосрочного хранения на 12 недель.
az sql midb ltr-policy set /
--resource-group mygroup /
--managed-instance myinstance /
--name mymanageddb /
--weekly-retention "P12W"
В этом примере политика хранения для еженедельного резервного копирования устанавливается на 12 недель, для ежегодного резервного копирования — на 5 лет, а также на неделю с 15 апреля, когда нужно создать резервную копию LTR за год.
az sql midb ltr-policy set /
--resource-group mygroup /
--managed-instance myinstance /
--name mymanageddb /
--weekly-retention "P12W" /
--yearly-retention "P5Y" /
--week-of-year 16
# get the Managed Instance
$subId = "<subscriptionId>"
$instanceName = "<instanceName>"
$resourceGroup = "<resourceGroupName>"
$dbName = "<databaseName>"
Connect-AzAccount
Select-AzSubscription -SubscriptionId $subId
$instance = Get-AzSqlInstance -Name $instanceName -ResourceGroupName $resourceGroup
# create LTR policy with WeeklyRetention = 12 weeks. MonthlyRetention and YearlyRetention = 0 by default.
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
WeeklyRetention = 'P12W'
}
Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
# create LTR policy with WeeklyRetention = 12 weeks, YearlyRetention = 5 years and WeekOfYear = 16 (week of April 15). MonthlyRetention = 0 by default.
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
WeeklyRetention = 'P12W'
YearlyRetention = 'P5Y'
WeekOfYear = '16'
}
Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
Просмотр резервных копий и восстановление из резервной копии
Чтобы просмотреть доступные долгосрочные резервные копии из портал Azure, выполните следующие действия.
В портал Azure выберите управляемый экземпляр и выберите "Резервные копии". На вкладке Доступные архивы выберите базу данных, для которой нужно просмотреть доступные резервные копии. Выберите Управление.
На панели Управление резервными копиями просмотрите доступные резервные копии.
Вы также можете восстановить эту страницу, выбрав резервную копию и выбрав " Восстановить".
Кроме того, чтобы восстановить резервную копию из долгосрочного хранения с помощью портал Azure, выполните следующие действия.
Войдите на портал Azure.
Перейдите в целевую Управляемый экземпляр SQL, в которой планируется восстановить базу данных.
На странице "Обзор" выберите +Создать базу данных, чтобы открыть страницу "Создание управляемой базы данных SQL Azure".
На вкладке "Основы" на странице "Создание управляемой базы данных SQL Azure" укажите сведения о подписке и группе ресурсов в разделе "Сведения о проекте". Затем в разделе "Сведения о базе данных" укажите новое имя базы данных, который вы планируете восстановить. Убедитесь, что правильный управляемый экземпляр указан в раскрывающемся списке. Затем нажмите кнопку Next: Источник данных >
На вкладке "Источник данных" выберите восстановление на определенный момент времени в разделе "Использование существующих данных". Укажите подписку, группу ресурсов и управляемый экземпляр, содержащий исходную базу данных. В раскрывающемся списке управляемой базы данных выберите базу данных , которую вы хотите восстановить, а затем выберите точку во времени, из которой нужно восстановить базу данных. Исходный и целевой экземпляр могут быть одинаковыми или двумя различными экземплярами. Нажмите кнопку "Далее" : дополнительные параметры >
На вкладке "Дополнительные параметры" можно установить флажок, чтобы наследовать политику хранения из исходной базы данных или, кроме того, можно выбрать "Настроить хранение", чтобы открыть страницу "Настройка политик" и задать нужные политики хранения для восстановленной базы данных. Завершив этот процесс, выберите Просмотреть и создать.
При успешном выполнении проверки нажмите кнопку "Создать ", чтобы восстановить базу данных.
Это действие запускает процесс восстановления, который создает новую базу данных и заполняет ее данными из исходной базы данных на указанный момент времени. Дополнительные сведения о процессе восстановления см. в статье Время восстановления.
Просмотр политик LTR
Чтобы просмотреть политику LTR для отдельной базы данных в экземпляре, выполните команду az sql midb ltr-policy show.
az sql midb ltr-policy show \
--resource-group mygroup \
--managed-instance myinstance \
--name mymanageddb
Просмотр резервных копий LTR
Чтобы просмотреть резервные копии LTR в экземпляре, выполните команду az sql midb ltr-backup list.
az sql midb ltr-backup list \
--resource-group mygroup \
--location eastus2 \
--managed-instance myinstance
Восстановление из резервных копий LTR
Чтобы восстановить базу данных из резервной копии LTR, выполните команду az sql midb ltr-backup restore. Чтобы получить , можно выполнить backup-id
.
Создайте для backup-id
переменную с помощью команды az sql db ltr-backup show
для использования в будущем.
get_backup_id=$(az sql midb ltr-backup show
--location eastus2 \
--managed-instance myinstance \
--database mydb \
--name "3214b3fb-fba9-43e7-96a3-09e35ffcb336;132292152080000000" \
--query 'id' \
--output tsv)
Восстановление базы данных из резервной копии LTR
az sql midb ltr-backup restore \
--dest-database targetmidb \
--dest-mi myinstance \
--dest-resource-group mygroup \
--backup-id $get_backup_id
Внимание
Для восстановления из резервной копии LTR после удаления экземпляра необходимо иметь разрешения в области подписки этого экземпляра. При этом подписка должна быть активной.
Примечание.
Здесь вы можете подключиться к восстановленной базе данных с помощью SQL Server Management Studio и выполнить необходимые задания, например извлечь часть данных из восстановленной базы данных, чтобы скопировать их в имеющуюся базу данных или удалить имеющуюся базу данных и присвоить ее имя восстановленной базе данных. Ознакомьтесь с восстановлением до точки во времени.
Просмотр политик LTR
В этом примере показано, как получить список политик LTR для отдельной базы данных в экземпляре.
# gets the current version of LTR policy for a database
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
}
Get-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
В этом примере показано, как получить список политик LTR для всех баз данных в экземпляре.
# gets the current version of LTR policy for all of the databases on an instance
$Databases = Get-AzSqlInstanceDatabase -ResourceGroupName $resourceGroup -InstanceName $instanceName
$LTRParams = @{
InstanceName = $instanceName
ResourceGroupName = $resourceGroup
}
foreach($database in $Databases.Name){
Get-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRParams -DatabaseName $database
}
Удаление политики LTR
В этом примере показано, как удалить политику LTR из базы данных.
# remove the LTR policy from a database
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
RemovePolicy = $true
}
Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
Просмотр резервных копий LTR
В этом примере показано, как получить список резервных копий LTR на конкретном экземпляре.
$instance = Get-AzSqlInstance -Name $instanceName -ResourceGroupName $resourceGroup
# get the list of all LTR backups in a specific Azure region
# backups are grouped by the logical database id, within each group they are ordered by the timestamp, the earliest backup first
Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $instance.Location
# get the list of LTR backups from the Azure region under the given managed instance
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
}
Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
# get the LTR backups for a specific database from the Azure region under the given managed instance
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
DatabaseName = $dbName
}
Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
# list LTR backups only from live databases (you have option to choose All/Live/Deleted)
$LTRBackupParam = @{
Location = $instance.Location
DatabaseState = 'Live'
}
Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
# only list the latest LTR backup for each database
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
OnlyLatestPerDatabase = $true
}
Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
Восстановление из резервных копий LTR
В этом примере показано, как выполнить восстановление из резервной копии LTR. Обратите внимание, что интерфейс не меняется, но для параметра идентификатора ресурса теперь требуется наличие идентификатора ресурса резервной копии LTR.
# restore a specific LTR backup as an P1 database on the instance $instanceName of the resource group $resourceGroup
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
DatabaseName = $dbname
OnlyLatestPerDatabase = $true
}
$ltrBackup = Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
$RestoreLTRParam = @{
TargetInstanceName = $instanceName
TargetResourceGroupName = $resourceGroup
TargetInstanceDatabaseName = $dbName
FromLongTermRetentionBackup = $true
ResourceId = $ltrBackup.ResourceId
}
Restore-AzSqlInstanceDatabase @RestoreLTRParam
Внимание
Для восстановления из резервной копии LTR после удаления экземпляра необходимо иметь разрешения в области подписки этого экземпляра. При этом подписка должна быть активной. Необходимо также опустить необязательный параметр -ResourceGroupName.
Примечание.
Здесь вы можете подключиться к восстановленной базе данных с помощью SQL Server Management Studio и выполнить необходимые задания, например извлечь часть данных из восстановленной базы данных, чтобы скопировать их в имеющуюся базу данных или удалить имеющуюся базу данных и присвоить ее имя восстановленной базе данных. Ознакомьтесь с восстановлением до точки во времени.
Удаление резервных копий LTR
Удалите резервные копии, сохраненные для определенной базы данных с помощью политики LTR.
Внимание
Удаление резервной копии LTR отменить нельзя. Чтобы удалить резервную копию LTR после удаления экземпляра, необходимо иметь разрешение в области подписки. Вы можете настроить в Azure Monitor уведомления о каждом удалении, выполнив фильтрацию по операции "Deletes a long term retention backup" (Удаление резервной копии долгосрочного хранения). В журнале действий содержатся сведения о том, кто и когда выполнил запрос. Подробные сведения см. в статье Создание, просмотр и управление оповещениями журнала действий с помощью Azure Monitor.
- В портал Azure перейдите к управляемому экземпляру SQL.
- Выберите "Резервные копии". Чтобы просмотреть доступные резервные копии LTR для определенной базы данных, выберите "Управление " в столбце "Доступные резервные копии LTR". Откроется панель со списком доступных резервных копий LTR для выбранной базы данных.
- В появившейся панели Доступные резервные копии LTR ознакомьтесь с доступными резервными копиями. Выберите резервную копию для удаления. Выберите команду Удалить.
Запустите az sql midb ltr-backup list , чтобы получить резервную копию name
.
Чтобы удалить резервную копию LTR, выполните команду az sql midb ltr-backup delete.
az sql midb ltr-backup delete \
--location eastus2 \
--managed-instance myinstance \
--database mymanageddb \
--name "3214b3fb-fba9-43e7-96a3-09e35ffcb336;132292152080000000"
В этом примере показано, как удалить раннюю резервную копию LTR из списка резервных копий. Этот пример получает список резервных копий LTR для определенной базы данных из региона Azure в заданном управляемом экземпляре SQL.
# remove the earliest backup
# get the LTR backups for a specific database from the Azure region under the given SQL managed instance
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
DatabaseName = $dbName
}
$ltrBackups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
$ltrBackup = $ltrBackups[0]
Remove-AzSqlInstanceDatabaseLongTermRetentionBackup -ResourceId $ltrBackup.ResourceId
Ограничения
Резервные копии базы данных, полученные из экземпляров, настроенных с помощью политики обновления SQL Server 2022, можно восстановить в экземплярах, настроенных с помощью политики обновления SQL Server 2022 или Always-up-up. Резервные копии базы данных, полученные из экземпляров, настроенных с помощью политики обновления Always-up-up, можно восстановить только в экземплярах, которые также настроены с помощью политики обновления Always-up-up.
Следующие шаги