Azure SQL Database の長期的なバックアップ保有期間を管理する
[アーティクル] 10/26/2023
23 人の共同作成者
フィードバック
この記事の内容
適用対象: Azure SQL データベース
Azure SQL Database を使用すると、バックアップが別々の Azure Blob Storage コンテナーに最長 10 年間自動的に保持されるように、長期的なバックアップ保有期間 (LTR) ポリシーを設定できます。 Azure portal、Azure CLI、または PowerShell でこのようなバックアップを使用して、データベースを復旧できます。
前提条件
PowerShell のための環境を準備します。
重要
PowerShell Azure Resource Manager モジュールは Azure SQL Database で引き続きサポートされますが、今後の開発はすべて Az.Sql モジュールを対象に行われます。 これらのコマンドレットについては、「AzureRM.Sql 」を参照してください。 Az モジュールと AzureRm モジュールのコマンドの引数は実質的に同じです。
Get-AzSqlDatabaseLongTermRetentionBackup
と Restore-AzSqlDatabase
の場合、次のいずれかのロールのメンバーである必要があります。
Remove-AzSqlDatabaseLongTermRetentionBackup
では、次のいずれかのロールのメンバーである必要があります。
アクセス許可
LTR バックアップを表示および復元するには、次のものが必要です。
LTR バックアップを削除するには、次のいずれかのロールのメンバーである必要があります。
Note
SQL Server の共同作成者ロールには、LTR バックアップを削除するアクセス許可はありません。
Azure RBAC のアクセス許可は、サブスクリプション またはリソース グループ のいずれかのスコープで付与できます。 ただし、削除されたサーバーに属する LTR バックアップにアクセスするには、そのサーバーのサブスクリプション スコープにこのアクセス許可を付与する必要があります。
Microsoft.Sql/locations/longTermRetentionServers/longTermRetentionDatabases/longTermRetentionBackups/delete
長期保有ポリシーを作成する
ご利用のサービス レベルのリテンション期間より長く自動バックアップを保持 するように SQL Database を構成できます。
Azure portal で、ご自分のサーバーに移動してから、 [バックアップ] を選択します。 [保持ポリシー] タブを選択して、バックアップの保持設定を変更します。
[保持ポリシー] タブで、長期的なバックアップ保持ポリシーを設定または変更するデータベースを選択します。 選択されていないデータベースへの影響はありません。
[ポリシーの構成] ウィンドウで、週単位、月単位、または年単位のバックアップに必要な保有期間を指定します。 長期的なバックアップ保有期間を設定しないことを示すには、保有期間を "0" にします。
[適用] を選択して、指定した保有期間設定を選択したすべてのデータベースに適用します。
重要
長期的なバックアップ保有期間ポリシーを有効にすると、初回バックアップが表示されて復元に利用できる状態になるまでに、最大 7 日かかる場合があります。 LTR のバックアップ頻度について詳しくは、バックアップの長期保有 に関するページをご覧ください。
LTR ポリシーを作成するには、az sql db ltr-policy set コマンドを実行します。 次の例では、週単位のバックアップについて 12 週間の長期保有ポリシーを設定します。
az sql db ltr-policy set \
--resource-group mygroup \
--server myserver \
--name mydb \
--weekly-retention "P12W"
この例では、週単位のバックアップについては 12 週間、年単位のバックアップについては 5 年、年単位の LTR バックアップを取得するのは 4 月 15 日の週に設定します。
az sql db ltr-policy set \
--resource-group mygroup \
--server myserver \
--name mydb \
--weekly-retention "P12W" \
--yearly-retention "P5Y" \
--week-of-year 16
# get the SQL server
$subId = "<subscriptionId>"
$serverName = "<serverName>"
$resourceGroup = "<resourceGroupName>"
$dbName = "<databaseName>"
Connect-AzAccount
Select-AzSubscription -SubscriptionId $subId
$server = Get-AzSqlServer -ServerName $serverName -ResourceGroupName $resourceGroup
# create LTR policy with WeeklyRetention = 12 weeks. MonthlyRetention and YearlyRetention = 0 by default.
Set-AzSqlDatabaseBackupLongTermRetentionPolicy -ServerName $serverName -DatabaseName $dbName `
-ResourceGroupName $resourceGroup -WeeklyRetention P12W
# create LTR policy with WeeklyRetention = 12 weeks, YearlyRetention = 5 years and WeekOfYear = 16 (week of April 15). MonthlyRetention = 0 by default.
Set-AzSqlDatabaseBackupLongTermRetentionPolicy -ServerName $serverName -DatabaseName $dbName `
-ResourceGroupName $resourceGroup -WeeklyRetention P12W -YearlyRetention P5Y -WeekOfYear 16
バックアップを表示してバックアップから復元する
LTR ポリシーを使用して保持されている特定のデータベースのバックアップを表示し、それらのバックアップから復元します。
Azure portal で、ご自分のサーバーに移動してから、 [バックアップ] を選択します。 特定のデータベースに使用可能な LTR バックアップを表示するには、[使用可能な LTR バックアップ] 列の下にある [管理] を選択します。 選択したデータベースに使用可能な LTR バックアップの一覧を示すウィンドウが表示されます。
表示されている [使用可能な LTR バックアップ] ウィンドウで、使用可能なバックアップを確認します。 復元元のバックアップ セットを選択します。
使用可能な LTR バックアップから復元するには、復元元のバックアップを選択してから、 [復元] を選択します。
新しいデータベースの名前を選択してから、 [確認と作成] を選択して、復元の詳細を確認します。 [作成] を選択して、選択したバックアップからデータベースを復元します。
ツール バーの通知アイコンを選択して、復元ジョブの状態を確認します。
復元ジョブが完了したら、 [SQL データベース] ページを開き、新しく復元されたデータベースを確認します。
LTR ポリシーを表示する
サーバーの 1 つのデータベースの LTR ポリシーを表示するには、az sql db ltr-policy show コマンドを実行します。
az sql db ltr-policy show \
--resource-group mygroup \
--server myserver \
--name mydb
LTR バックアップを表示する
データベースの LTR バックアップの一覧を表示するには、az sql db ltr-backup list コマンドを使用します。 このコマンドを使用すると、他のコマンドで使用するための name
パラメーターを知ることができます。
az sql db ltr-backup list \
--location eastus2 \
--server myserver \
--database mydb
LTR バックアップから復元する
LTR バックアップからデータベースを復元するには、az sql db ltr-backup restore コマンドを実行します。 az sql db ltr-backup show を実行すると、backup-id
を取得できます。
後で使用するには、"az sql db ltr-backup show" コマンドで backup-id
の変数を作成します。
get_backup_id=$(az sql db ltr-backup show
--location eastus2 \
--server myserver \
--database mydb \
--name "3214b3fb-fba9-43e7-96a3-09e35ffcb336;132292152080000000" \
--query 'id' \
--output tsv)
LTR バックアップからデータベースを復元します。
az sql db ltr-backup restore \
--dest-database targetdb \
--dest-server myserver \
--dest-resource-group mygroup \
--backup-id $get_backup_id
重要
サーバーまたはリソース グループが削除された後に LTR バックアップから復元するには、サーバーのサブスクリプションをスコープとしたアクセス許可が必要であり、そのサブスクリプションがアクティブである必要があります。 また、オプションの -ResourceGroupName パラメーターを省略する必要もあります。
Note
ここからは、SQL Server Management Studio を使って復元されたデータベースに接続し、データベースのスワップなど、必要なタスクを実行できます。 ポイントインタイム リストア をご覧ください。
LTR ポリシーを表示する
この例では、サーバー内の LTR ポリシーの一覧を表示する方法を示します。
# get all LTR policies within a server
$ltrPolicies = Get-AzSqlDatabase -ResourceGroupName $resourceGroup -ServerName $serverName | `
Get-AzSqlDatabaseLongTermRetentionPolicy
# get the LTR policy of a specific database
$ltrPolicies = Get-AzSqlDatabaseBackupLongTermRetentionPolicy -ServerName $serverName -DatabaseName $dbName `
-ResourceGroupName $resourceGroup
LTR ポリシーをクリアする
この例では、データベースから LTR ポリシーを消去する方法を示します。
Set-AzSqlDatabaseBackupLongTermRetentionPolicy -ServerName $serverName -DatabaseName $dbName `
-ResourceGroupName $resourceGroup -RemovePolicy
LTR バックアップを表示する
サーバー内の LTR バックアップを一覧表示する例を次に示します。
# 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
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location
# get the list of LTR backups from the Azure region under the named server
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location -ServerName $serverName
# get the LTR backups for a specific database from the Azure region under the named server
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location -ServerName $serverName -DatabaseName $dbName
# list LTR backups only from live databases (you have option to choose All/Live/Deleted)
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location -DatabaseState Live
# only list the latest LTR backup for each database
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location -ServerName $serverName -OnlyLatestPerDatabase
LTR バックアップから復元する
LTR バックアップから復元する例を次に示します。 このインターフェイスは変更されませんでしたが、リソース ID パラメーターでは LTR バックアップ リソース ID が必須になりました。
# restore a specific LTR backup as an P1 database on the server $serverName of the resource group $resourceGroup
Restore-AzSqlDatabase -FromLongTermRetentionBackup -ResourceId $ltrBackup.ResourceId -ServerName $serverName -ResourceGroupName $resourceGroup `
-TargetDatabaseName $dbName -ServiceObjectiveName P1
重要
サーバーまたはリソース グループが削除された後に LTR バックアップから復元するには、サーバーのサブスクリプションをスコープとしたアクセス許可が必要であり、そのサブスクリプションがアクティブである必要があります。 また、省略可能な -ResourceGroupName
パラメーターも省略する必要があります。
コンプライアンスやその他のミッションクリティカルな要件を満たすために LTR バックアップを使っている場合、LTR バックアップが復元できることと、復元の結果が想定したデータベース状態になることを検証するために、定期的な復元訓練を実施することを検討してください。
Note
ここから、SQL Server Management Studio を使用して、復元されたデータベースに接続し、必要なタスクを実行できます。たとえば、復元されたデータベースからデータを少し抽出して既存のデータベースにコピーしたり、既存のデータベースを削除し、復元されたデータベースの名前を既存のデータベース名に変更したりできます。 ポイントインタイム リストア をご覧ください。
LTR バックアップを削除する
LTR ポリシーを使用して、特定のデータベースに対して保持されているバックアップを削除します。
重要
LTR バックアップの削除は、元に戻せません。 サーバーが削除された後に LTR バックアップを削除するには、サブスクリプション スコープのアクセス許可が必要です。 Azure Monitor では、"長期保有バックアップを削除します" という操作をフィルター処理することで、それぞれの削除に関する通知を設定できます。 アクティビティ ログには、どのユーザーがいつ要求を行ったかに関する情報が含まれています。 詳しい手順については、アクティビティ ログ アラートの作成 に関するページを参照してください。
Azure portal で、Azure SQL Database の論理サーバーに移動します。
[バックアップ] を選択します。 特定のデータベースに使用可能な LTR バックアップを表示するには、[使用可能な LTR バックアップ] 列の下にある [管理] を選択します。 選択したデータベースに使用可能な LTR バックアップの一覧を示すウィンドウが表示されます。
表示されている [使用可能な LTR バックアップ] ウィンドウで、使用可能なバックアップを確認します。 削除するバックアップを選択します。 [削除] を選択します。
az sql db ltr-backup list を使用すると、バックアップの name
を確認できます。
LTR バックアップを削除するには、az sql db ltr-backup delete コマンドを実行します。
az sql db ltr-backup delete \
--location eastus2 \
--server myserver \
--database mydb \
--name "3214b3fb-fba9-43e7-96a3-09e35ffcb336;132292152080000000"
バックアップの一覧から LTR バックアップを削除する例を次に示します。
[LTR バックアップの表示] でバックアップを識別します。
Remove-AzSqlDatabaseLongTermRetentionBackup
を使用してバックアップを削除します。
# remove the earliest backup
$ltrBackup = $ltrBackups[0]
Remove-AzSqlDatabaseLongTermRetentionBackup -ResourceId $ltrBackup.ResourceId
ベスト プラクティス
コンプライアンスまたはその他のミッション クリティカルな要件を満たすために LTR バックアップを使用する場合:
Portal、Azure CLI、または PowerShell を使用し、「バックアップの表示 」セクションの手順を実行することで、構成済みのポリシーごとに LTR バックアップが作成されていることを確認します。
定期的に復旧訓練を実施し、LTR バックアップを復元したとき、データベースの状態が予想どおりになることを確認することを検討してください。
関連するコンテンツ
サービスによって生成された自動バックアップについては、自動バックアップ に関する記事を参照してください。
バックアップの長期保存については、バックアップの長期保存 に関する記事を参照してください。