適用対象:
Azure SQL Managed Instance
Azure SQL Managed Instance では、長期的なバックアップ アイテム保持ポリシー (LTR) を構成できます。 これにより、データベースのバックアップを個別の Azure BLOB ストレージ コンテナーに最大 10 年間自動的に保持できます。 Azure portal、Azure CLI、PowerShell でこのようなバックアップを使用してデータベースを復旧できます。
以下のセクションでは、Azure portal、PowerShell、Azure CLI を使用してバックアップの長期保有を構成し、Azure SQL ストレージ内のバックアップを表示し、Azure SQL ストレージ内のバックアップから復元する方法について説明します。
前提条件
PowerShell のための環境を準備します。
重要
PowerShell Azure Resource Manager (AzureRM) モジュールは、2024 年 2 月 29 日に非推奨になりました。 今後のすべての開発では、Az.Sql モジュールを使用する必要があります。 ユーザーは、引き続きサポートと更新を行うために、AzureRM から Az PowerShell モジュールに移行することをお勧めします。 AzureRM モジュールは維持またはサポートされなくなりました。 Az PowerShell モジュールと AzureRM モジュールのコマンドの引数は、ほぼ同じです。 互換性の詳細については、「新しい Az PowerShell モジュールの概要」を参照してください。
Get-AzSqlInstanceDatabaseLongTermRetentionBackup
と Restore-AzSqlInstanceDatabase
の場合、次のいずれかのロールのメンバーである必要があります。
- サブスクリプションの所有者ロール、または
- SQL Managed Instance 共同作成者ロールまたは
- 次のアクセス許可を持つカスタム役割:
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 Managed Instance 共同作成者ロールまたは
- 次のアクセス許可を持つカスタム役割:
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
Note
SQL Managed Instance 共同作成者ロールには、LTR バックアップを削除するアクセス許可はありません。
Azure ロールベースのアクセス制御 (RBAC) のアクセス許可は、"サブスクリプション" または "リソース グループ" のいずれかのスコープで付与できます。 ただし、削除されたインスタンスに属する LTR バックアップにアクセスするには、そのインスタンスの "サブスクリプション" スコープにアクセス許可を付与する必要があります。
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/delete
長期保有ポリシーを作成する
ご利用のサービス レベルのリテンション期間より長く自動バックアップを保持するように SQL Managed Instance を構成できます。
Azure portal で、マネージド インスタンスを選んで、[バックアップ] を選びます。 [アイテム保持ポリシー] タブで、長期的なバックアップ保持ポリシーを設定または変更するデータベースを選択します。 変更は、選択されていないデータベースには適用されません。
[ポリシーの構成] ウィンドウで、週単位、月単位、または年単位のバックアップに必要な保有期間を指定します。 長期的なバックアップ保有期間を設定しないことを示すには、保有期間を "0" にします。
完了したら、 [適用] を選択します。
重要
長期的なバックアップ保有期間ポリシーを有効にすると、初回バックアップが表示されて復元に利用できる状態になるまでに、最大 7 日かかる場合があります。 LTR のバックアップ頻度について詳しくは、バックアップの長期保有に関するページをご覧ください。
SQL Managed Instance データベースの詳細を取得するには、az sql midb show コマンドを実行します。
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 年、年単位の LTR バックアップを取得するのは 4 月 15 日の週に設定します。
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 portal で表示するには、次の手順のようにします。
Azure portal で、マネージド インスタンスを選んで、[バックアップ] を選びます。 [利用可能なバックアップ] タブで、利用可能なバックアップを表示するデータベースを選択します。 [管理] を選択します。
[バックアップの管理] ウィンドウで、利用可能なバックアップを確認します。
このページでバックアップを選んで [復元] を選ぶことにより、復元することもできます。
または、Azure portal を使って長期保有からバックアップを復元するには、次の手順のようにします。
Azure portal にサインインします。
データベースの復元先のターゲット SQL Managed Instance に移動します。
[概要] ページで、[+ 新しいデータベース] を選んで、[Azure SQL マネージド データベースを作成する] ページを開きます。
[Azure SQL マネージド データベースを作成する] ページの [基本] タブの [プロジェクトの詳細] で、サブスクリプションとリソース グループの詳細を指定します。 次に、[データベースの詳細] で、復元するデータベースの新しい名前を指定します。 ドロップダウンリストに正しいマネージド インスタンスが表示されていることを確認します。 次に、[次へ: データ ソース >] を選びます
[データ ソース] タブで、[既存のデータを使用する] の [特定の時点に復元] を選びます。 ソース データベースが含まれるサブスクリプション、リソース グループ、マネージド インスタンスを指定します。 [マネージド データベース] ドロップダウンリストから復元するデータベースを選んで、データベースを復元する特定の時点を選びます。 ソースとターゲットのインスタンスは、同じでも、2 つの異なるインスタンスでもかまいません。 [次へ: 追加の設定 >] を選びます
[追加の設定] タブでは、ボックスをオンにしてソース データベースからアイテム保持ポリシーを継承するか、[データ保持の構成] を選んで [ポリシーの構成] ページを開き、復元されたデータベースの保持ポリシーを設定することができます。 終わったら、 [確認と作成] を選択します。
[確認および作成] で検証が成功したら、[作成] を選んでデータベースを復元します。
このアクションにより、復元プロセスが開始されます。このプロセスでは、新しいデータベースが作成され、指定した時点における元のデータベースのデータが入力されます。 復旧プロセスの詳細については、「復旧時間」を参照してください。
LTR ポリシーを表示する
インスタンス内の 1 つのデータベースの 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 コマンドを実行します。 az sql midb ltr-backup show を実行すると、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 バックアップから復元するには、インスタンスのサブスクリプションをスコープとしたアクセス許可が必要であり、そのサブスクリプションがアクティブである必要があります。
Note
ここから、SQL Server Management Studio を使用して、復元されたデータベースに接続し、必要なタスクを実行できます。たとえば、復元されたデータベースからデータを少し抽出して既存のデータベースにコピーしたり、既存のデータベースを削除し、復元されたデータベースの名前を既存のデータベース名に変更したりできます。 ポイントインタイム リストアをご覧ください。
LTR ポリシーを表示する
次の例では、1 つのデータベースのインスタンス内の LTR ポリシーの一覧を表示する方法を示します。
# gets the current version of LTR policy for a database
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
}
Get-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
次の例では、1 つのインスタンス上にあるすべてのデータベースの 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 バックアップから復元する例を次に示します。 このインターフェイスは変更されませんでしたが、リソース ID パラメーターでは LTR バックアップ リソース ID が必須になりました。
# 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 パラメーターを省略する必要もあります。
Note
ここから、SQL Server Management Studio を使用して、復元されたデータベースに接続し、必要なタスクを実行できます。たとえば、復元されたデータベースからデータを少し抽出して既存のデータベースにコピーしたり、既存のデータベースを削除し、復元されたデータベースの名前を既存のデータベース名に変更したりできます。 ポイントインタイム リストアをご覧ください。
LTR バックアップを削除する
LTR ポリシーを使用して、特定のデータベースに対して保持されているバックアップを削除します。
重要
LTR バックアップの削除は、元に戻せません。 インスタンスが削除された後に LTR バックアップを削除するには、サブスクリプション スコープのアクセス許可が必要です。 Azure Monitor では、"長期保有バックアップを削除します" という操作をフィルター処理することで、それぞれの削除に関する通知を設定できます。 アクティビティ ログには、どのユーザーがいつ要求を行ったかに関する情報が含まれています。 詳しい手順については、アクティビティ ログ アラートの作成に関するページを参照してください。
- Azure Portal で SQL Managed Instance に移動します。
- [バックアップ] を選択します。 特定のデータベースに使用可能な 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 バックアップを削除する方法を示します。 このサンプルでは、特定の SQL Managed Instance の下にある Azure リージョンから、特定のデータベースの LTR バックアップの一覧を取得します。
# 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-to-date 更新ポリシーのいずれかを使用して構成されたインスタンスに復元できます。 Always-up-to-date 更新ポリシーを使用して構成されたインスタンスから取得されたデータベース バックアップは、Always-up-to-date 更新ポリシーを使用して構成されたインスタンスにのみ復元できます。
次のステップ
- サービスによって生成された自動バックアップについては、自動バックアップに関する記事を参照してください。
- バックアップの長期保存については、バックアップの長期保存に関する記事を参照してください。