🦖

Azure SQL Databaseのリストア

2024/12/22に公開

1. この記事の範囲

この記事では、Azure SQL Databaseのリストア機能について解説します。リストアとは、バックアップを基にデータベースを以前の状態に復元するプロセスであり、データ損失や障害が発生した際に、迅速かつ確実に復旧を行うための重要な機能です。
本記事では、リストア機能の概要や種類を紹介し、AzureポータルやCLIを使用した具体的なリストア手順について説明します。Azure SQL Databaseのリストア機能を効果的に活用し、データベース運用の信頼性と効率性を向上させる方法を理解していきます。

2. 内容

リストアは、バックアップデータを基にデータベースを以前の状態に復元するプロセスです。Azure SQL Databaseのリストア機能は、次のようなシナリオに対応します。

2-1. ポイントインタイム復元 (Point-in-Time Reatore)

ポイントインタイム復元は、Azure SQL Databaseの自動バックアップを活用して、過去7 ~35日間の任意の時点にデータベースを復元する機能です。ポイントインタイム復元では、バックアップ保有期間内の任意の時刻を指定して、データベースをその時点の状態に復元できます。この復元プロセスは、Azure SQL Databaseが自動的に取得する完全バックアップ、差分バックアップ、およびトランザクションログバックアップを利用します。

  • 新しいデータベースとして復元: Azure SQL Databaseでは WITH REPLACEオプションがサポートされていないため、既存のデータベースを上書きすることはできません。復元時に新しい名前を指定し、既存データベースを削除して新しい名前に変更することで、置換する形を取ります。
  • 復元元のバックアップ: 自動バックアップ(完全バックアップ、差分バックアップ、トランザクションログバックアップ)を使用して復元します。トランザクションログバックアップが5~10分ごとに取得されるため、ほぼリアルタイムでの復元が可能です。

Reatore実行例

1. 現在のデータ
対象のAzure SQL Database (p1db)のSampleTableに3レコード存在します。

2. データの削除
データを削除して、ポイントインタイム復元の必要性をシミュレーションします。

3. ポイントインタイム復元を実行
Azure CLI を使用して、復元を実行します。

az sql db restore \
    --resource-group sample-p1 \ //リソースグループ名
    --server p1 \ // サーバー名
    --name p1db \  //元のデータベース名
    --dest-name p1db-restored \ // 復元後のデータベース名
    --time 2024-12-21T11:30:00Z // 復元したい時刻

4. 復元後のデータ確認

5. 既存データベースと置き換え

DROP DATABASE [p1db];
ALTER DATABASE [p1db-restored] MODIFY NAME = [p1db];

2-2. Geo 冗長復元 (Geo-restore)

Azure SQL DBは自動バックアップは、Azure Storageに格納され、Geo冗長化されています。そのため、プライマリリージョンが利用不可になった場合、セカンダリリージョンでデータベースを復元できます。この機能は、災害復旧 (DR) 計画において重要な役割を果たします。

要件

Geo 冗長復元 (Geo-restore)を利用するには、いくつかの要件を満たす必要があります。まず、この機能は、Geo冗長バックアップ ストレージを使用して構成されたデータベースでのみ利用可能です。現在 Geo冗長バックアップが有効になっていない場合は、バックアップストレージの冗長性を構成することで変更が可能です。また、Geo冗長復元は同じサブスクリプション内に存在するデータベースに対してのみ実行できます。

復元元

復元は、Geo冗長ストレージに保存された最新のバックアップを基に実行されます。これにより、任意の Azureリージョン内に存在する論理サーバーでデータベースを復元することができます。復元時には、ソースデータベースから Geoレプリケートされたバックアップが利用されます。これにより、ホスティングリージョンでインシデントや障害が発生した場合でも、データベースの可用性を迅速に確保できます。

注意点

  • データの遅延
    Geo冗長ストレージへのバックアップデータのレプリケートには時間差があるため、復元されたデータベースは元のデータベースと比較して最大1時間の遅延が生じる可能性があります。この時間差を考慮した運用が必要です。

  • 既定の復旧オプション
    Geo冗長復元は、ホスティングリージョンで発生した障害によりデータベースが利用できなくなった場合の既定の復旧オプションとして機能します。復元されたデータベースは、他の任意のリージョン内のサーバーで作成され、迅速な災害復旧を実現します。

2-3. 削除されたデータベースの復元

削除されたデータベースを復元する場合、Azure Portal、Azure CLI、Azure PowerShell、または REST APIを使用します。同じサーバー上で削除時刻またはそれ以前の任意の時点に復元できます。

制約と注意点

  • サーバー自体が削除された場合、そのサーバーに関連付けられたすべてのデータベースも削除され、ポイントインタイムリストア (PITR)バックアップを使用してデータベースを復旧することはできなくなります。この制限により、サーバー削除後の復旧手段は存在しなくなるため、サーバー削除時には慎重な判断が求められます。
  • 削除されたデータベースに対して長期保持バックアップ (LTR)が構成されている場合、そのLTRバックアップを使用してデータベースを別のサーバーに復元することが可能です。この方法を活用すれば、データベースを完全に失うリスクを軽減し、災害復旧の一環としてデータを確保できます。

LTRバックアップを有効活用するためには、事前にバックアップ構成を正しく設定し、必要な期間のデータ保持ポリシーを適用しておくことが重要です。

3. まとめ

Azure SQL Databaseのリストア機能は、データ損失や災害発生時に迅速な復旧を可能にします。ポイントインタイム復元、Geo冗長復元、削除されたデータベースの復元など、多彩な機能を駆使することで、運用の信頼性と柔軟性を向上させることができます。
リストア機能をCI/CDパイプラインに組み込むなど、運用自動化の工夫を加えることで、さらなる効率化も可能です。継続的に運用体制を見直し、最適なリストア計画を立てることが成功の鍵となります。
https://learn.microsoft.com/ja-jp/azure/azure-sql/database/recovery-using-backups?view=azuresql&tabs=azure-cli

Discussion