次の方法で共有


Azure SQL Managed Instance のデータベースを以前の時点に復元します

適用対象: Azure SQL Managed Instance

ポイントインタイム リストアを使うと、特定の以前の時点におけるデータベースのコピーであるデータベースを作成できます。 この記事では、Azure SQL Managed Instance 内のデータベースについて、ポイントインタイム リストアを実行する方法について説明します。

注意

Create または Update v02.01.2022 は非推奨になっています。 2023 年 1 月以降は、すべてのデータベース復元操作に対して、代わりとなる Create または Update v5.0.2022 API 呼び出しを使用してください。

概要

ポイントインタイム リストアは、エラーや障害が原因のインシデントが発生した場合、データが正しく読み込まれない場合、重要なデータが削除された場合などの復旧シナリオで役立ちます。 また、単純にデータベースのデプロイをテストし、監査する目的で使うこともできます。 データベースの設定によって異なりますが、Azure のバックアップ ファイルは 7 日から 35 日間保持されます。

以下のシナリオでは、ポイントインタイム リストアを使ってデータベースを復元できます。

  • 既存のデータベースから
  • 削除されたデータベースから
  • 同じマネージド インスタンス、または別のマネージインスタンスに対して
  • 同じサブスクリプション内のマネージド インスタンスに対して、または異なるサブスクリプション内のマネージド インスタンスに対して

次の表に、SQL Managed Instance におけるポイントインタイム リストアのシナリオを示します。

シナリオ Azure portal Azure CLI PowerShell
既存のデータベースを同じマネージド インスタンスに復元する はい イエス はい
既存のデータベースを異なるマネージド インスタンスに復元する はい イエス はい
削除されたデータベースを同じマネージド インスタンスに復元する はい イエス はい
削除されたデータベースを異なるマネージド インスタンスに復元する はい イエス はい
既存のデータベースを別のサブスクリプション内のマネージド インスタンスに復元する はい イエス はい
削除されたデータベースを別のサブスクリプション内のマネージド インスタンスに復元する はい イエス はい

アクセス許可

データベースを復旧するには、次のいずれかである必要があります。

  • サブスクリプション内の SQL Server 共同作成者ロールまたは SQL Managed Instance 共同作成者ロール (復旧のターゲットによって決まります) のメンバー
  • サブスクリプションの所有者

データベースを別のターゲット サブスクリプションに復元するには、SQL Managed Instance 共同作成者ロールでない場合は次のアクセス許可も必要です。

  • ソース SQL マネージド インスタンスの Microsoft.Sql/managedInstances/databases/readBackups/action
  • ターゲット SQL マネージド インスタンスの Microsoft.Sql/managedInstances/crossSubscriptionPITR/action

詳細については、Azure RBAC: 組み込みのロールに関するページをご覧ください。

制限事項

これらの制限は、SQL Managed Instance でのポイントインタイム リストアに適用されます。

  • ポイントインタイム リストアを使って SQL Managed Instance のデプロイ全体を復元することはできません。 ポイントインタイム リストアは、SQL Managed Instance でホストされているデータベースのコピーを作成するためにのみ使います。

  • ポイントインタイム リストアの制限は、データベースを同じサブスクリプション内のマネージド インスタンスに復元するか、別のサブスクリプション内のマネージド インスタンスに復元するかによって異なります。

  • Azure SQL Managed Instance でサービス エンドポイント ポリシーが有効になっている場合、サブネットにサービス エンドポイント ポリシーを配置すると、異なるサブネット内のインスタンスからのポイントインタイム リストアが妨げられます。

警告

マネージド インスタンスのストレージ サイズに注意してください。 復元するデータのサイズによっては、マネージド インスタンスのストレージを使い果たす可能性があります。 復元するデータに対して十分なストレージ容量がマネージド インスタンスにない場合は、別の方法を使ってください。

同じサブスクリプションに復元する

あるマネージド インスタンスから同じ Azure サブスクリプション内の別のマネージド インスタンスに復元する場合、両方のマネージド インスタンスが同じリージョン内に存在する必要があります。 現在、リージョン間の復元はサポートされていません。

別のサブスクリプションに復元する

サブスクリプション間でのポイントインタイム リストア バックアップの復元には、次の制限があります。

  • 両方のサブスクリプションが同じリージョンにある必要があります。
  • 両方のサブスクリプションが同じテナントにある必要があります。
  • サブスクリプションの種類は、Enterprise Agreement、Cloud Solution Provider、Microsoft Certified Partner、または従量課金制のいずれかである必要があります。
  • プライマリ インスタンスでのみ復元アクションを使用できます。
  • バックアップはプライマリ リージョンからのみ復元できます。 geo レプリケートされたセカンダリ リージョンからのデータベースの復元は、サブスクリプション間のポイントインタイム リストアではサポートされていません。
  • 復元アクションを実行するユーザーは、SQL Managed Instance 共同作成者ロールが割り当てられているか、次の明示的なアクセス許可を持っている必要があります。
    • ソース SQL マネージド インスタンスの Microsoft.Sql/managedInstances/databases/readBackups/action
    • ターゲット SQL マネージド インスタンスの Microsoft.Sql/managedInstances/crossSubscriptionPITR/action
  • 自分のキーを持ち込む (BYOK) 場合は、キーが両方のサブスクリプションに存在する必要があります。

既存のデータベースを復元する

Azure portal、PowerShell、または Azure CLI を使うことで、既存のデータベースを同じサブスクリプションに復元できます。 PowerShell または Azure CLI を使って同じサブスクリプション内の別のインスタンスに復元する場合は、必ずターゲットの SQL Managed Instance リソースのプロパティを指定します。 既定では、データベースは同じインスタンスに復元されます。

別のサブスクリプションに復元する場合は、復元アクションの基になる Create または Update v5.0.2022 API 呼び出しに、restorePointInTimecrossSubscriptionTargetManagedInstanceId、および crossSubscriptionSourceDatabaseId または crossSubscriptionRestorableDroppedDatabaseId が含まれている必要があります。

既存のデータベースを復元するには、Azure portal でデータベース ページに移動して、[復元] を選びます。

または、データベースを復元するには、次の手順のようにします。

  1. Azure portal にサインインします。

  2. データベースの復元先のターゲット SQL Managed Instance に移動します。

  3. [概要] ページで、[+ 新しいデータベース] を選んで、[Azure SQL マネージド データベースを作成する] ページを開きます。

    新しいデータベースの追加が選ばれている、Azure portal の SQL Managed Instance の [概要] ペインを示すスクリーンショット。

  4. [Azure SQL マネージド データベースを作成する] ページの [基本] タブの [プロジェクトの詳細] で、サブスクリプションとリソース グループの詳細を指定します。 次に、[データベースの詳細] で、復元するデータベースの新しい名前を指定します。 ドロップダウンに正しいマネージド インスタンスが表示されていることを確認します。 次に、[次へ: データ ソース >] を選びます

    [Azure SQL マネージド データベースを作成する] ページの [基本] タブを示す Azure portal のスクリーンショット。

  5. [データ ソース] タブで、[既存のデータを使用する][特定の時点に復元] を選びます。 ソース データベースが含まれるサブスクリプション、リソース グループ、マネージド インスタンスを指定します。 [マネージド データベース] ドロップダウンから復元するデータベースを選んで、データベースを復元する特定の時点を選びます。 ソースとターゲットのインスタンスは、同じでも、2 つの異なるインスタンスでもかまいません。 [次へ: 追加の設定 >] を選びます

    [Azure SQL マネージド データベースを作成する] ページの [データ ソース] タブを示す Azure portal のスクリーンショット。[特定の時点に復旧] が選ばれています。

  6. [追加の設定] タブでは、ボックスをオンにしてソース データベースからアイテム保持ポリシーを継承するか、[データ保持の構成] を選んで [ポリシーの構成] ページを開き、復元されたデータベースの保持ポリシーを設定することができます。 終わったら、 [確認と作成] を選択します。

    [Azure SQL マネージド データベースを作成する] ページの [追加の設定] タブを示す Azure portal のスクリーンショット。

  7. [確認および作成] で検証が成功したら、[作成] を選んでデータベースを復元します。

このアクションにより、復元プロセスが開始されます。このプロセスでは、新しいデータベースが作成され、指定した時点における元のデータベースのデータが入力されます。 復旧プロセスの詳細については、「復旧時間」を参照してください。

削除されたデータベースを復元する

削除されたデータベースの復元は、Azure portal、Azure PowerShell、または Azure CLI を使って行うことができます。

削除されたマネージド データベースを Azure portal を使って復元するには:

  1. Azure portal で、ソース マネージド インスタンスに移動します。

  2. 左側のメニューの [データ管理][バックアップ] を選びます。

  3. [データベースの表示][削除済み] を選びます。

  4. 復元するデータベースの [復元] を選びます。

    ポータルで使用できるデータベースを示すスクリーンショット。削除されたデータベースを復元する [復元] ボタンが強調表示されています。

  5. [Create Azure SQL Managed database] (Azure SQL マネージド データベースの作成) で、データベースを復元する先のターゲット マネージド インスタンスの詳細を入力または選択します。 [データ ソース] タブを選びます。

  6. [データ ソース] に、ソース データベースの詳細を入力または選択します。 [追加設定] タブを選択します。

  7. [追加の設定] で、データ保有設定を構成します。 [確認および作成] タブを選択します。

  8. [確認および作成][作成] を選び、削除されたデータベースを復元します。

既存のデータベースを上書きする

既存のデータベースを上書きするには、次の手順を実行する必要があります。

  1. 上書きする元のデータベースをドロップします。
  2. ポイントインタイムから復元されたデータベースの名前を、ドロップしたデータベースの名前に変更します。

元のデータベースを削除する

Azure portal、PowerShell、または Azure CLI を使って、データベースを削除できます。

データベースをドロップするもう 1 つのオプションは、SQL Server Management Studio (SSMS) でマネージド インスタンスに直接接続してから、DROP Transact-SQL (T-SQL) を使う方法です。

DROP DATABASE WorldWideImporters;

マネージド インスタンス内のデータベースに接続するには、次のいずれかの方法を使います。

  1. Azure portal でマネージド インスタンス内のデータベースを選びます。

  2. コマンド バーの [削除] を選びます。

    Azure portal を使ってデータベースを削除する方法を示すスクリーンショット。

元のデータベース名と一致するように新しいデータベース名を変更する

SQL Server Management Studio (SSMS) を使って、マネージド インスタンスに直接接続します。 次に、以下の T-SQL クエリを実行します。 このクエリを実行すると、復元されたデータベースの名前を、上書きする予定のドロップされたデータベースの名前に変更することができます。

ALTER DATABASE WorldWideImportersPITR MODIFY NAME = WorldWideImporters;

マネージド インスタンス内のデータベースに接続するには、次のいずれかの方法を使います。

次のステップ

自動化されたバックアップについて確認します。