メインコンテンツまでスキップ
Dummy text to avoid mindtouch from removing the blank div

Druva

MS-SQLサーバーのデータベースで利用可能なバックアップ / リストア方法

この記事では、以下のバックアップジョブに関する情報を提供します。

前提条件

Phoenixがデータベースをバックアップする前に、サーバーをバックアップ / リストア用に構成する必要があります。Phoenixでデータベースをバックアップする手順を参照してください

フルバックアップ

PhoenixはMS-SQLサーバのデータベースの永久増分バックアップを実行します。前提条件で述べたように、バックアップおよびリストア操作ではVSSおよびSQLライターサービスを利用します。バックアップポリシーに基づいてフルバックアップが開始されると、PhoenixエージェントはVSSフレームワークを使用してSQLライターサービスと通信します。Phoenixエージェントは、バックアップに含まれるすべてのデータベースのフルスキャンを実行します。データベースの初回バックアップでは、すべてのデータベースがフルバックアップされます。データベースのバックアップが初回以外の場合は、データベースのフルスキャンが実行されますが、重複排除が適用された後にデータベースの更新のみがバックアップされます。バックアップジョブが成功すると、Phoenixはストレージにスナップショット(復元ポイント)を作成します。

フルバックアップを使用して作成されたスナップショットについて

日次保存期間 (daily retention period) としてすべてのスナップショットを保存する日数を指定すると、その期間内に作成されたすべてのスナップショットが保存されます。

たとえば保存期間として、すべてのスナップショットを10日間保持するように指定するとします。バックアップポリシーでは、フルバックアップが毎週水曜日の12:00:00 PMに実行されるようにスケジュールされています。

2017年2月1日から2017年2月28日の間、水曜日は1日、8日、15日、22日です。フルバックアップが2017年2月1日に開始され、ジョブが成功した午後4:00:00にスナップショットが作成されたとします。

2017年2月8日に、もう一つのフルスナップショットが午後3:00:00に作成されました。すべてのスナップショットは10日間保持されるため、2017年2月11日午後11時59分59秒より前である2017年2月1日と2017年2月8日に作成されたフルスナップショットは保持されます。2017年2月11日午後11時59分59秒以降は、2017年2月1日のスナップショットは週次、月次、年次の保存期間に基づいて保持されます。

フルバックアップ後に作成されたスナップショットからデータベースを復元する

たとえば、2017年2月12日の午前11:00:00にデータベースをリストアするとします。Phoenix管理コンソールからリストアジョブを起動すると、データを復元するために以下のスナップショットの選択肢が表示されます。

  • ホット (Hot)
  • ウォーム (Warm)
  • 解凍済み (Thawed)
  • コールド (Cold)

Phoenixは90日間、スナップショットをウォームストレージに保存します。2017年2月1日に作成されたスナップショットが、2017年2月5日午後11時59分59秒に終了した週の最新スナップショットである場合、週次保持期間に基づいて保存されます。2017年2月1日と2017年2月8日に作成されたスナップショットは、ウォームスナップショットに分類されます。ウォームスナップショットを使用するとデータベースを直接復元できます。コールドスナップショットを使用してデータベースを復元するには、まずそれを解凍する必要があります。スナップショットを解凍すると、解凍済みスナップショットとして表示されるので、それを使用してデータベースを復元できます。11月に作成され保存期間に基づいて保持されているスナップショットは、この例でコールドスナップショットと見なすことができます。

Phoenix CloudCacheを設定していれば、ホットスナップショットが表示されます。Phoenix CloudCacheとホットスナップショットの詳細については、Phoenix CloudCacheを参照してください

ワークフロー

フルバックアップには次の手順が含まれます。

  1. Phoenixはエージェントが実行されているかどうかを確認します。エージェントが実行されていない場合、Phoenixはバックアップリクエストをキューに入れます。Phoenixエージェントの起動後にこのリクエストが実行されます。
  2. バックアップ操作が開始される前に、エージェントはVSSサービスおよびSQLライターサービスが実行されているかどうかを確認します。サービスが実行されていない場合、エージェントはこれらのプロセスを自動的に起動します。
  3. 概算フェーズで、エージェントはボリュームシャドウコピーAPIを使用してMS-SQLサーバーからデータベース情報を取得します。
  4. その後、エージェントはバックアップする必要がある個別のファイルセットを決定します。VSSはスナップショットを提供します。
  5. データベースの初回バックアップ時は、スナップショット全体がバックアップされます。データベースの初回バックアップ以外の場合は、ファイルセットの中で更新されたデータがスナップショットからコピーされ、サーバーにアップロードされます。データがサーバーに正常にアップロードされた後、バックアップは成功のステータスになります。

追加情報

  • VSSスナップショットは一時的なもので、オペレーティングシステムによって自動的に削除されます。ハードドライブにアクセスできない場合、VSSおよびMS-SQLサーバーは内部ファイル情報の認識や更新に時間がかかることがあります。
  • データベースファイルが削除済みファイルを含むパーティションに移動された時間にバックアップが起動した場合、バックアップが失敗する可能性があります。
  • VSSおよびMS-SQLサーバーが内部ファイル情報を更新した後に、バックアップジョブは正常完了します。ただし、いくつかのデータベースファイルが削除済みファイルパーティションに移動され、他のいくつかのファイルが論理パーティションでまだ利用可能である場合、バックアップは常に失敗します。回避策として、このデータベースを手動でクリーンアップする必要があります。
  • システムデータベース tempdb はバックアップされません。
  • バックアップ時、データベースエンティティは次の順序でバックアップされます。
    • データベースファイル:MDFファイル、LDFファイル、NDFファイル
    • エージェント固有のメタデータ(JSONデータ)
    • VSSバックアップドキュメント(XMLデータ)
    • SQL Writerメタデータドキュメント(XMLデータ)
    • Sentinel(JSONデータ)
  • サーバー上で
    • DB1のファイルがC:\Dataにある
    • DB2のファイルがC:\Dataにある
    • DB3のファイルがC:\Program Files\Dataにある

という場合、エージェントはC:\Data と C:\Program Files\Data を2つのファイルセットとして識別し、順番にアップロードします。ただし、ファイルセット内のファイルは並行してアップロードされます。

差分バックアップ

MS-SQLサーバーは差分バックアップ機能を提供します。差分バックアップが起動すると、エージェントは更新されたデータベースに関する情報を要求します。Phoenixは差分データをバックアップし、ストレージにスナップショットを作成します。フルバックアップのスナップショットが存在する場合に差分バックアップを実行できます。フルバックアップのスナップショットが存在しない場合、差分バックアップは自動的にフルバックアップジョブに変換されます。詳しくは、SQL差分バックアップが完全バックアップに変換されるシナリオを参照してください。

注:  [ Backup Now ]をクリックすると、差分バックアップが開始されます。ただし、サーバーの初回バックアップ時はフルバックアップが開始されます。 手動バックアップは、指定した帯域幅による制限が行われず、利用可能な最大帯域幅が使用されます。

差分バックアップを使用して作成されたスナップショットについて

差分バックアップによって作成されたスナップショットは、データベースの復元に使用できるスナップショットを作成するという点で、フルバックアップジョブと同様に機能します。差分バックアップジョブは、フルバックアップジョブと比較して実行が速くなる可能性があるため、フルバックアップの間に複数の差分バックアップをスケジュールできます。

前の例の続きで、毎日午後9:00:00に差分バックアップを指定したとします。2017年2月1日から2017年2月10日までの間に、10個の差分スナップショットが作成されます。2017年2月11日午前5:00:00にスナップショットを使用してデータベースをリストアしようとすると、ウォームスナップショットとして12個のスナップショット(フルバックアップのスナップショット2件と差分バックアップのスナップショット10件)が表示されます。差分スナップショットも、日次、週次、月次、年次の保存期間に基づいて保持されます。

差分バックアップの利点は、バックアップジョブの速度です。エージェントはSQLサーバーから更新されたデータベースに関する情報を直接取得するため、差分バックアップジョブはフルバックアップよりも高速です。

差分バックアップを使用して作成されたスナップショットからのリストア

2017年2月13日の午前11:00:00にデータベースをリストアする場合は、

  • 2017年2月1日と2017年2月2日の差分バックアップの後のスナップショットは消去されます。
  • ウォームスナップショットとして、2017年2月3日から2017年2月12日までに作成された差分バックアップ時のスナップショットを確認できます。
  • 2017年2月1日と2017年2月8日のフルバックアップ時に作成されたスナップショットを見ることができます。

上記のスナップショットはすべてウォームスナップショットに該当するため、任意のスナップショットを復元ポイントとして選択し、それを使用してデータベースを復元できます。ただし、差分バックアップの後に作成されたスナップショットを選択すると、Phoenixはその直前に作成されたフルバックアップスナップショットを使用します。通常、2017年2月1日に作成されたフルバックアップスナップショットは、10日間の保存期間に基づいて消去されます。しかし、リストアに2017年2月8日より前に作成された差分スナップショットを選択した場合、Phoenixは2017年2月1日に作成されたフルバックアップスナップショットを必要とするため、 2017年2月1日のスナップショットは保持されます。

ワークフロー

差分バックアップには次の手順が含まれます。

  1. Phoenixはエージェントが実行されているかどうかを確認します。エージェントが実行されていない場合、Phoenixはバックアップリクエストをキューに入れます。Phoenixエージェントの起動後にリクエストが実行されます。
  2. バックアップ操作が開始される前に、エージェントはVSSサービスおよびSQLライターサービスが実行されているかどうかを確認します。サービスが実行されていない場合、エージェントはこれらのプロセスを自動的に起動します。
  3. 概算フェーズで、エージェントはボリュームシャドウコピーAPIを使用してSQL Serverからデータベース情報を取得します。
  4. 差分バックアップの場合、SQL Serverは最終バックアップ以降のデータベースに対する更新を提供します。Phoenixはこれらの変更をサーバーにアップロードします。ファイルがサーバーに正常にアップロードされると、バックアップは成功のステータスとなります。

追加情報

次の場合、Phoenixは差分バックアップをフルバックアップとして扱います。 

  • フルバックアップが完了していないデータベースの差分バックアップが試行されたとき 
  • 最終バックアップ以降、新しいデータベースファイルがデータベースに追加されたか、データベースから削除されたとき
  • データベースファイルが、最終バックアップ以降に名前変更または移動されたとき
  • データベースの名前が変更されたとき
  • アップロードされたデータベースファイルとそのメタデータ間の不一致が検出されたとき 
  • マスターデータベースが最終フルバックアップに含まれており、マスターデータベースファイルのパスまたは名前が最終フルバックアップ以降に変更されたとき
  • Phoenixがボリュームシャドウコピーサービスからデータ変更に関する詳細を取得できなかったとき
  • フルバックアップが失敗すると、次の差分バックアップはフルバックアップに変換されます。
  • フルバックアップがPhoenix MS-SQLエージェントによって実行され、2回目のフルバックアップがサードパーティのバックアップツールまたはMS SQLサーバーによって実行された場合。その後、Phoenixエージェントは次の差分バックアップを完全バックアップに変換できます。 
  • 前回のフル/差分バックアップ以降にデータベースが縮小されたと判断した場合、Phoenixは後続の差分バックアップをフルバックアップに変換します。 

トランザクションログのバックアップ

MS-SQLサーバーのトランザクションログには、サーバーに対するすべての変更が記録されます。Phoenixは、バックアップポリシーで指定した間隔に基づいてトランザクションログを適時バックアップし、フルまたは差分バックアップが完了した後に起動します。Phoenixがトランザクションログをバックアップすると、MS-SQLサーバー上のトランザクションログは切り捨てられます。サーバーのフルバックアップが一度も完了しない場合、トランザクションログのバックアップは開始されません。トランザクションログはより厳密なRPOを提供し、フルバックアップまたは差分バックアップを使用して作成されたスナップショットに依存します。ログバックアップは、単純復旧 (simple recovery) モードのデータベースには適用されません。 

ログバックアップスケジュールについて

バックアップされたトランザクションログは、日次保存期間に基づいて保持されます。週次、月次、年次の保存ポリシーはログバックアップには適用されません。

たとえば、ログバックアップの間隔を30分に指定したとします。上記の例では、フルバックアップは2017年2月1日午後12:00:00に開始され、2017年2月1日午後4:00:00に完了しましたが、この場合、午後4時30分にログバックアップが開始されます。その後、差分バックアップが開始される午後9時00分まで30分ごとにトランザクションログがバックアップされます。

トランザクションログからの復元

トランザクションログを使用してデータベースを復元すると、次のことが可能になります。

  • トランザクションが発生した時点 (point-in-time) の選択
  • トランザクションログでマークされたトランザクションを選択して、データベースをその時点にリストア
  • トランザクションが発生した時点を選択し、データベースをスタンバイモードのままにする

ポイントインタイムトランザクションまたはマーク付きトランザクションを選択すると、Phoenixはスナップショットを使用してデータベースを復元します。スナップショットを使用してデータベースを復元すると、選択したトランザクションまでトランザクションログがデータベースに適用されます。これにより、2つのスナップショット間の時点にデータベースを復元できるようになるため、RPOを短くすることができます。

ワークフロー 

次のフローチャートは、トランザクションログのワークフローを示しています。

tmp.png

AGバックアップセット向けトランザクションマークのバックアップ / リストアの制限

ログバックアップがセカンダリノードで実施された場合、Phoenixはトランザクションマークをバックアップしません。 

MS-SQLサーバーは、可用性グループ(AG)内のデータベースのセカンダリノードで、トランザクションログに関連するトランザクションマークを複製しません。PhoenixのAGバックアップセットのトランザクションマークをリストアしようとすると、ログバックアップがプライマリノードとセカンダリノードのどちらで行われたかによって、MS-SQLサーバー上に作成されたトランザクションマークが表示される場合と表示されない場合があります。 

次の手順

データベースをバックアップした後、復旧が必要な場合はデータベースをリストアできます。リストアジョブの詳細については、以下を参照してください。

  • この記事は役に立ちましたか?