差分バックアップ (SQL Server)

適用対象:yesSQL Server (サポートされているすべてのバージョン)

このバックアップと復元に関する記事は、すべてのSQL Serverデータベースに関連しています。

差分バックアップは、直近の完全データ バックアップに基づきます。 差分バックアップでは、その完全バックアップの作成後に変更されたデータのみがキャプチャされます。 差分バックアップの基になる完全バックアップを差分の ベース といいます。 完全バックアップ (コピーのみのバックアップを除く) は、データベース バックアップ、部分バックアップ、ファイル バックアップなど、一連の差分バックアップのベースとなります。 ファイルの差分バックアップのベース バックアップは、完全バックアップ、ファイル バックアップ、または部分バックアップ内に格納できます。

メリット

差分バックアップの作成は、完全バックアップを作成するよりもはるかに高速な場合があります。 差分バックアップでは、差分バックアップのベースとなる完全バックアップ以降に変更されたデータのみが記録されます。 そのため、データのバックアップを頻繁に作成することができ、データ損失のリスクが軽減されます。 ただし、差分バックアップを復元するには、先に差分ベースを復元しておく必要があります。 2 つのバックアップ ファイルが必要となるため、差分バックアップを復元するときは、完全バックアップを復元するときと比べて、より多くの手間と時間がかかります。

データベースの差分バックアップは、データベースのある部分が他の部分よりも頻繁に変更される場合に特に役立ちます。 そのような場合にデータベースの差分バックアップを使用すると、完全バックアップのオーバーヘッドをかけることなく頻繁にバックアップを行うことが可能になります。

完全復旧モデルでは、差分バックアップを使用することによって、復元する必要のあるログ バックアップの数を減らすことができます。

差分バックアップの概要

差分バックアップは、差分ベースの作成時と差分バックアップの作成時の間に変化した エクステント (物理的に連続した 8 ページのコレクション) の状態をキャプチャします。 したがって、差分バックアップのサイズは、ベースの作成後に変更されたデータの量に依存します。 通常、ベースが古いほど、新しい差分バックアップの量は多くなります。 一連の差分バックアップにおいて、更新頻度の高いエクステントは、差分バックアップごとに異なるデータを格納している可能性が高くなります。

次の図に差分バックアップの動作を示します。 この図では、24 個のデータ エクステントがあり、そのうちの 6 個が変更されています。 差分バックアップには、これら 6 つのデータ エクステントのみが含まれます。 差分バックアップ操作は、エクステントごとに 1 つのビットを含むビットマップ ページに依存します。 ベース以降に更新されたエクステントそれぞれにつき、ビットマップ内のビットが 1 に設定されます。

Diagram of how the differential bitmap identifies changed extents.

注意

コピーのみのバックアップを実行しても、差分ビットマップは更新されません。 したがって、コピーのみのバックアップを実行しても、それ以降の差分バックアップに影響はありません。

ベースの直後に実行される差分バックアップは、差分ベースよりも大幅に小さい場合があります。 そのため、ストレージ領域とバックアップ時間が節約されます。 一方、データベースは時間の経過と共に変化するため、データベースと個々の差分ベースの間の差分は大きくなっていきます。 差分バックアップとそのベースの間の時間が長くなればなるほど、差分バックアップが大きくなる可能性が高くなります。 これは、最終的には差分バックアップが差分ベースのサイズにほぼ等しくなる可能性があることを意味しています。 差分バックアップが大きくなると、高速で小さなバックアップの利点が失われます。

差分バックアップのサイズが大きくなると、データベースを復元するときに、差分バックアップの復元に要する時間がかなり長くなる場合があります。 このため、定期的に新しい完全バックアップを実行することにより、データの新しい差分ベースを作成することをお勧めします。 たとえば、データベース全体のバックアップ (つまり、データベースの完全バックアップ) を週に 1 回実行し、次の週の完全バックアップまでの間、一連のデータベースの差分バックアップを定期的に実行します。

復元時には、差分バックアップを復元する前に、ベースを復元する必要があります。 次に、最新の差分バックアップのみを復元して、データベースをその差分バックアップが作成されたときの状態にします。 通常は、最新の完全バックアップを復元してから、その完全バックアップを基にした最新の差分バックアップを復元します。

メモリ最適化テーブルを使用したデータベースの差分バックアップ

差分バックアップおよびメモリ最適化テーブルを含むデータベースの詳細については、「 メモリ最適化テーブルが含まれるデータベースのバックアップ」をご覧ください。

読み取り専用データベースの差分バックアップ

読み取り専用データベースの場合、単独で使用される完全バックアップは、差分バックアップで使用する場合よりも管理が簡単です。 データベースが読み取り専用の場合、バックアップやその他の操作では、ファイルに含まれるメタデータを変更できません。 そのため、差分バックアップが開始されるログ シーケンス番号 (差分ベース LSN) など、差分バックアップに必要なメタデータがデータベースに master 格納されます。 データベースが読み取り専用のときに差分ベースが取得された場合、差分ビットマップは、ベース バックアップ以降に発生したより多くの変更を示します。 バックアップセット システム テーブルに格納されているデータがベース以降に変更されたかどうかを判断するために使用されるため differential_base_lsn 、余分なデータは バックアップ によって読み取られますが、バックアップには書き込まれません。

読み取り専用データベースの再構築、復元、またはデタッチとアタッチが行われると、差分ベースの情報が失われます。 これは、データベースが master ユーザー データベースと同期されていないために発生します。 SQL Server データベース エンジンは、この問題を検出または防止できません。 それ以降の差分バックアップは最新の完全バックアップに基づいていず、予期しない結果が生じる可能性があります。 新しい差分ベースを確立するには、データベースの完全バックアップを作成することをお勧めします。

読み取り専用データベースで差分バックアップを使用するためのベスト プラクティス

読み取り専用データベースのデータベースの完全バックアップを作成した後、後続の差分バックアップを作成する場合は、データベースをバックアップします master

データベースが master 失われた場合は、ユーザー データベースの差分バックアップを復元する前にデータベースを復元します。

後で差分バックアップを使用する予定の読み取り専用データベースをデタッチしてアタッチする場合は、実用的な場合は、読み取り専用データベースとデータベースの両方のデータベースの完全バックアップを master 作成します。

こちらもご覧ください