Azure SQL Database のポイントインタイム リストア


このポストは、10 月 1 日に投稿された Azure SQL Database Point in Time Restore の翻訳です。

ビジネス継続性に関するシリーズの最終回となる今回は、「ポイントインタイム リストア」について説明します。これはセルフサービス型の復元機能で、Basic、Standard、Premium の各レベルのデータベースで使用できます。前回の記事では、ポイントインタイム リストアを含む Azure SQL Database のビジネス継続性モデルについて説明しました。下記の表は、このモデルをまとめたものです。このモデルにおいてポイントインタイム リストアは、不意のデータ破損やデータ削除が発生した場合、それ以降の直近のバックアップからデータベースを復元することを目的として設計されています。

BCDR オプション

Basic レベル

Standard レベル

Premium レベル

ポイントインタイム リストア

7 日間以内の任意の復元ポイント

14 日間以内の任意の復元ポイント

35 日間以内の任意の復元ポイント

地理リストア (Geo-Restore)

RTO < 24 時間

RPO < 24 時間

RTO < 24 時間

RPO < 24 時間

RTO < 24 時間

RPO < 24 時間

標準の地理レプリケーション

対象外

RTO < 2 時間

RPO < 30 分

RTO < 2 時間

RPO < 30 分

アクティブ地理レプリケーション

対象外

対象外

RTO < 1 時間

RPO < 5 分

ポイントインタイム リストアとは

Azure SQL Database サービスでは、すべてのデータベースが自動バックアップ システムで保護されています。このバックアップは、Basic レベルでは 7 日間、Standard レベルでは 14 日間、Premium レベルでは 35 日間保持されます。ポイントインタイム リストアはセルフサービス型の機能で、Basic、Standard、Premium の各レベルのデータベースを保持期間内の任意の時点のバックアップから復元することができます。ポイントインタイム リストアでは、必ず新しいデータベースが作成されます。

このデータベースのバックアップは自動的に実行され、既定で有効に設定されていて、追加料金なしでご利用いただけます。追加料金は、実際に復元機能を使用した場合にのみ、通常のデータベース料金に従って新規作成されたデータベースの分が発生します。

自動バックアップ システムとポイントインタイム リストアを併用することで、何らかの理由で不意のデータ破損やデータ削除が発生した場合にも、追加コストおよび管理者不要の機能でデータベースを保護することができます。

自動バックアップ機能とは

自動バックアップ機能による保護は、Basic、Standard、Premium の各プランのすべてのデータベースに適用されます。この機能では、完全バックアップを毎週 1 回、差分バックアップを毎日 1 回、ログのバックアップを 5 分ごとに作成します。初回の完全バックアップはデータベース作成直後にスケジュール設定され、通常は 30 分以内で完了します。ただし、データベースのコピーや大規模なデータベースの復元により作成されたものなど、「最初から大きい」データベースの場合は 30 分以上かかる場合があります。初回の完全バックアップが完了した後は、すべてのバックアップのスケジュール設定と管理はバックグラウンドで自動的に実施されます。完全バックアップと差分バックアップを実際に行うタイミングは、全体の負荷のバランスを考慮したうえでシステムが決定します。

バックアップ ファイルは、データベースと同じデータ センターにローカルに保存され、ローカル冗長が適用されます。データベースを復元するときには、必要なバックアップ ファイルを取得し、それを適用します。また、最新の週単位および日単位のバックアップは、障害復旧を目的として、地政学的に同一地域内にあるペアのリージョンにもコピーされます。他に、地理冗長コピーは前回の記事でご紹介した地理リストア (Geo-Restore) 機能でも使用されます。

稼働中のデータベースのポイントインタイム リストア

Azure 管理ポータルを使用すると、稼働中の Basic、Standard、Premium の各レベルのデータベースを簡単な操作で保持期間内の任意の時点 (ポイントインタイム) に復元できます。この場合は、データベース リストでデータベースを選択するか、データベース ダッシュボードで該当するデータベースを開き、[RESTORE] オプションを選択します。

新しいデータベース名を入力し、スライダー コントロールで復元ポイントを保持期間内から指定します。復元ポイントは、日付と時刻を分単位で手動で入力して指定することもできます。以上の内容を確認した後、データベースの復元が開始されます。

データベース復元の所要時間は、データベースのサイズ、選択された時点、選択された時点の状態を再構築するために再実行する必要があるアクティビティの量など、さまざまな要素により決定されます。非常に大規模なデータベースや稼働状況が非常に活発なデータベースの場合には、復元に数時間ほどかかる場合もあります。

データベースを復元するときには、必ず元のデータベースと同じサーバーに新しいデータベースが作成されます。このため、復元されるデータベースには新しい名前を付ける必要があります。このデータベースには、復元ポイントの時点で適用されていたサービス レベルの既定のパフォーマンス レベルが適用されます。復元時には新しいデータベースが作成されますが、復元されるデータベースのサービス レベルとパフォーマンス レベルは、現在稼働中のデータベースの状態と異なる可能性があります。このため、十分な DTU を割り当てる (英語) 余裕がサーバーにあることを確認する必要があります。処理完了後は、復元されたデータベースは通常の完全にアクセス可能なオンライン データベースとして使用可能で、該当するサービス レベルおよびパフォーマンス レベルに基づき通常の料金が発生します。

復旧を目的としてデータベースを復元する場合、復元されたデータベースを元のデータベースの代わりに使用するか、または復元されたデータベースからデータを取得して元のデータベースを更新するかを選択できます。

復元されたデータベースを元のデータベースの代替として使用する場合、パフォーマンス レベルとサービス レベルが適切かどうかを確認し、また必要に応じてデータベースのスケールを変更します。その後、T-SQL で ALTER DATABASE コマンドを使用して元のデータベースの名前を変更し、続いて復元されたデータベースに元のデータベースの名前を付けます。

復元されたデータベースからデータを取得する場合は、別途必要なデータ復元スクリプトを作成して実行する必要があります。

復元操作には長時間を要する場合もありますが、データベースの状態はデータベース リストから常に確認できます。また、復元中にデータベースを削除するとこの操作は中止され、料金は発生しません。

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

Basic、Standard、Premium の各データベースのいずれかを削除した場合、通常の保持期間内は最後のバックアップが保存されているため、削除時点のデータベースを復元することができます。削除されたデータベースを Azure 管理ポータルから復元する場合は、[DELETED DATABASES] タブを開き、適切なデータベース エントリを指定します。

注意が必要なのは、同一名のデータベースを複数回繰り返して使用した場合です。この場合、削除時刻を確認して、復元対象のデータベースを適切に選択するようにする必要があります。

前述の場合と同様に、ここで新しいデータベースの名前を入力します。ここでは復元ポイントはデータベース削除時点のみです。また、これも前述の場合と同様に、削除されたデータベースの復元先は必ず元のデータベースと同じサーバーです。このため、サーバーを削除するとそのサーバーに存在していたデータベースは復元できなくなりますので注意が必要です。

バックアップ/復元とコピー/エクスポート/インポートの比較

ポイントインタイム リストアは、Basic、Standard、Premium の各データベースで不意のデータ損失やデータ破損が発生した場合の復元手段として推奨されています。Web データベースおよび業務用データベースでは、コピーとエクスポート/自動エクスポートを使用してバックアップを作成する手間のかかる回避策を実施する必要がありますが、ポイントインタイム リストアを使用するとこれが不要になります。このメリットだけでも、新しいサービス レベルにアップグレードする理由として十分です。バックアップと復元の併用には、低コストで運用可能 (バックアップは容量を超過しない限り無料でご利用いただけますが、データベース コピーではトランザクションの整合性を維持するためのエクスポートと BACPAC ファイルの保存に料金がかかります)、管理が不要 (バックアップは自動的に実施されますが、コピーの場合はエクスポート データの管理やエクスポートのスケジュール設定を管理者が実施する必要があります)、RPO が短い (実際のコピー/エクスポート/インポートの場合よりも細かい粒度 (1 分単位) で復元ポイントを指定できます)、RTO が短い (通常、個々のテーブルでスキーマを作成してからインデックスを無効化し、データを読み込み、インデックスを有効化するという手順が必要なインポート処理よりも、バックアップからの復元ははるかに高速です) というメリットがあります。

ただし、コピー/エクスポートの手法は、保持期間を超える長期間のアーカイブ化ソリューションとしては引き続き推奨されます。

API を使用してデータベースを復元する

Azure 管理ポータルを使用する以外にも、PowerShell の Start-AzureSqlDatabaseRestore (英語) コマンドレットや SQL Database 管理 API「データベースの復元要求の作成」を使用してデータベースを復元する方法もあります。

まとめ

自動バックアップ機能とセルフサービス型のポイントインタイム リストア機能を使用すると、不意のデータ破損やデータ削除からデータベースを保護することができます。この機能は追加料金や管理が不要で、Basic、Standard、Premium の各プランのすべてのデータベースでご利用いただけます。バックアップと復元は、短期間の復元としては、コピー/エクスポート/インポートといった代替ソリューションよりも強力な機能を備えています。このポイントインタイム リストア機能をビジネス継続性戦略の一環としてご利用いただき、エクスポートによるバックアップは長期保存用のアーカイブ化やデータ移行時にのみご利用いただくことをお勧めします。

Comments (1)

  1. yamashita says:

    Taniさん

    お世話になります。

    少し教えていただきたいのですが、

    「ポイントインタイムリストア」は、Azure側で自動で行う「自動バックアップ」により保護されていると認識しております。

    トランザクションログが5分間隔ということは、粒度は「1分単位」ではなく、「5分単位」が正しいと思うのですが・・・・

    因みに「エクスポート」は、「日単位」という認識で宜しいでしょうか?

    今、社内で検討していてこの辺の私の理解が悪いもので、申し訳ございませんが、ご教授いただければと思います。

    何卒宜しくお願いします。

Skip to main content