ポイントインタイム リストアを実行する

ポイントインタイム リストア (PITR) を使用して、データベースを、保持期間の範囲内の、過去のある時点における別のデータベースのコピーとして作成します。 この記事では、Azure Arc で有効な SQL Managed Instance 内でデータベースのポイントインタイム リストアを実行する方法について説明します。

ポイントインタイム リストアでは、次のようにデータベースを復元できます。

  • 既存のデータベースから
  • 同じ Azure Arc で有効な SQL Managed Instance 上の新しいデータベースへ

データベースを事前に構成された保有期間の設定内の特定の時点に復元できます。 Azure Arc で有効な SQL Managed Instance の保有期間の設定は、次のようにして確認できます。

直接接続モードの場合:

az sql mi-arc show --name <SQL instance name> --resource-group <resource-group>
#Example
az sql mi-arc show --name sqlmi --resource-group myresourcegroup

間接接続モードの場合:

az sql mi-arc show --name <SQL instance name> --k8s-namespace <SQL MI namespace> --use-k8s
#Example
az sql mi-arc show --name sqlmi --k8s-namespace arc --use-k8s

現在、ポイントインタイム リストアでは、次のようにデータベースを復元できます。

  • インスタンス上の既存のデータベースから
  • 同じインスタンス上の新しいデータベースへ

自動バックアップ

Azure Arc で有効な SQL Managed Instance には、自動バックアップ機能が組み込まれています。 新しいデータベースを作成または復元するたびに、Azure Arc で有効な SQL Managed Instance によって完全バックアップが直ちに開始され、差分バックアップとトランザクション ログ バックアップが自動的にスケジュールされます。 SQL マネージド インスタンスは、これらのバックアップをデプロイ時に指定したストレージ クラスに保存します。

ポイントインタイム リストアを使用すると、データベースを保持期間内の特定の時点に復元できます。 データベースを特定の時点に復元するために、Azure Arc 対応データ サービスでは、バックアップ ファイルを特定の順序で適用します。 次に例を示します。

  1. 完全バックアップ
  2. 差分バックアップ
  3. 1 つ以上のトランザクション ログ バックアップ

Point-in-time restore

現在、完全バックアップは 1 週間に 1 回、差分バックアップは 12 時間に 1 回、トランザクション ログ バックアップは 5 分に 1 回行われています。

保有期間

新しい Azure Arc で有効な SQL Managed Instance の既定の保有期間は 7 日で、これは 0 または 1 - 35 日の値で調整できます。 保有期間は、SQL マネージド インスタンスのデプロイ時に --retention-days プロパティを指定することで設定できます。 構成された保有期間より古いバックアップ ファイルが自動的に削除されます。

az CLI を使用して特定の時点からデータベースを作成する

az sql midb-arc restore --managed-instance <SQL managed instance> --name <source DB name> --dest-name <Name for new db> --k8s-namespace <namespace of managed instance> --time "YYYY-MM-DDTHH:MM:SSZ" --use-k8s
#Example
az sql midb-arc restore --managed-instance sqlmi1 --name Testdb1 --dest-name mynewdb --k8s-namespace arc --time "2021-10-29T01:42:14.00Z" --use-k8s

また、--dry-run オプションを使用すると、実際にデータベースを復元することなく、復元操作を検証することができます。

az sql midb-arc restore --managed-instance <SQL managed instance> --name <source DB name> --dest-name <Name for new db> --k8s-namespace <namespace of managed instance> --time "YYYY-MM-DDTHH:MM:SSZ" --use-k8s --dry-run
#Example
az sql midb-arc restore --managed-instance sqlmi1 --name Testdb1 --dest-name mynewdb --k8s-namespace arc --time "2021-10-29T01:42:14.00Z" --use-k8s --dry-run

kubectl を使用して特定の時点からデータベースを作成する

  1. Kubernetes ネイティブ ツールでポイントインタイム リストアを実行するには、kubectl を使用できます。 タスク固有の yaml ファイルを作成します。 次に例を示します。

    apiVersion: tasks.sql.arcdata.microsoft.com/v1
    kind: SqlManagedInstanceRestoreTask                 
    metadata:                                       
      name: myrestoretask20220304
      namespace: test                              
    spec:                                           
      source:                                       
        name: miarc1                                
        database: testdb                            
      restorePoint: "2021-10-12T18:35:33Z"          
      destination:                                  
        name: miarc1                           
        database: testdb-pitr
      dryRun: false  
    
  2. プロパティを次のように編集します。

    1. name: カスタム リソース (CR) ごとの一意の文字列。 Kubernetes で必要です。
    2. namespace: インスタンスがある Kubernetes 名前空間。
    3. source: ... name: ソース インスタンスの名前。
    4. source: ... database: 復元が適用される元のソース データベースの名前。
    5. restorePoint: 復元操作の特定の時点 (UTC 日時)。
    6. destination: ... name: 宛先の Arc 対応 SQL Managed Instance の名前。 現在、ポイントインタイム リストアは Arc SQL Managed Instance 内でのみサポートされています。 これは、ソースの SQL Managed Instance と同じである必要があります。
    7. destination: ... database: 復元が適用される先の新しいデータベースの名前。
  3. ポイントインタイム リストアを開始するタスクを作成します。 次の例では、myrestoretask20220304.yaml で定義されているタスクを開始します。

    kubectl apply -f myrestoretask20220304.yaml
    
  4. 復元タスクの状態を次のようにチェックします。

    kubectl get sqlmirestoretask -n <namespace>
    

復元タスクの状態は、PITR の進行状況に基づいて、約 10 秒ごとに更新されます。 この状態は、Waiting から Restoring に、さらに Completed または Failed まで進みます。

Azure Data Studio を使用して特定の時点からデータベースを作成する

次のように、Azure Data Studio からデータベースを特定の時点に復元することもできます。

  1. Azure Data Studio を起動する
  2. ツールに関するページで説明されている、必要な Arc 拡張機能があることを確認します。
  3. Azure Arc データ コントローラーに接続する
  4. データ コントローラー ノードを展開し、インスタンスを右クリックして [管理] を選択します。 Azure Data Studio で SQL マネージド インスタンスのダッシュボードが起動します。
  5. ダッシュボードの [バックアップ] タブをクリックします
  6. SQL マネージド インスタンス上のデータベースの一覧と、最も早い復元から最も遅い復元の時間範囲、および復元を開始するためのアイコンが表示されます
  7. 復元元のデータベースのアイコンをクリックします。 Azure Data Studio の右側にブレードが起動します
  8. ブレードに必要な入力を指定し、[復元] をクリックします

進行状況の監視

復元が開始されると、完全バックアップ、差分バックアップ、ログ バックアップの実際の復元操作を実行するタスクが Kubernetes クラスター内に作成されます。 このアクティビティの進行状況は、次のように Kubernetes クラスターから監視できます。

kubectl get sqlmirestoretask -n <namespace>
#Example
kubectl get sqlmirestoretask -n arc

タスクの詳細を取得するには、タスクで kubectl describe を実行します。 次に例を示します。

kubectl describe sqlmirestoretask <nameoftask> -n <namespace>

保持期間を構成する

Azure Arc で有効な SQL Managed Instance の保有期間は、次のように元の設定から再構成できます。

警告

現在の保有期間を短くすると、新しい保有期間より古い特定の時点に復元することができなくなります。 新しい保有期間内で PITR を提供するために必要がなくなったバックアップは削除されます。 現在の保有期間を長くした場合、新しい保有期間内の古い特定の時点に復元する機能はすぐには利用できません。 システムにより長いバックアップの保有が開始されたら、やがて使用できるようになります。

SQL Managed Instance-Azure Arc の場合は、--retention-period を次のように変更できます。 次のコマンドは、directindirect の両方の接続モードに適用されます。

az sql mi-arc update  --name <SQLMI name> --k8s-namespace <namespace>  --use-k8s --retention-days <retentiondays>

次に例を示します。

az sql mi-arc update  --name sqlmi --k8s-namespace arc  --use-k8s --retention-days 10

自動バックアップを無効にする

Azure Arc で有効な SQL Managed Instance の特定のインスタンスの組み込みの自動バックアップは、以下のように --retention-days プロパティを 0 に設定することで無効にできます。 次のコマンドは、directindirect の両方のモードに適用されます。

警告

Azure Arc で有効な SQL Managed Instance の自動バックアップを無効にすると、構成されているすべての自動バックアップが削除され、ポイントインタイム リストアを実行できなくなります。 必要に応じて、retention-days プロパティを変更して自動バックアップを再開始することができます。

az sql mi-arc update  --name <SQLMI name> --k8s-namespace <namespace>  --use-k8s --retention-days 0

次に例を示します。

az sql mi-arc update  --name sqlmi --k8s-namespace arc  --use-k8s --retention-days 0

バックアップを監視する

バックアップは /var/opt/mssql/backups/archived/<dbname>/<datetime> フォルダーに格納されます。ここで、<dbname> はデータベースの名前です。<datetime> は各完全バックアップの開始時の UTC 形式のタイムスタンプになります。 完全バックアップが開始されるたびに、新しいフォルダーが作成され、そのフォルダー内に完全バックアップとそれ以降のすべての差分バックアップおよびトランザクション ログ バックアップが含められます。 最新の完全バックアップとそれ以降の差分バックアップおよびトランザクション ログ バックアップは、/var/opt/mssql/backups/current/<dbname><datetime> フォルダーの下に格納されます。

制限事項

Azure Arc で有効な SQL Managed Instance に対するポイントインタイム リストアには、次の制限があります。

  • ポイントインタイム リストアはデータベース レベルの機能であり、インスタンス レベルの機能ではありません。 ポイントインタイム リストアでインスタンス全体を復元することはできません。
  • バックアップの作成元と同じ Azure Arc で有効な SQL Managed Instance に対してだけ復元できます。

Azure Arc で有効な SQL Managed Instance の機能の詳細情報

データ コントローラーの作成から開始する

Azure Arc で有効な SQL Managed Instance を作成する