一括ログ復旧モデルでのバックアップ
このトピックは、通常は完全復旧モデルを使用する SQL Server データベースでの一括操作の最適化に関連しています。
一括ログ復旧モデルは、大量のデータの一括インポートなど、特定の大規模な一括操作のパフォーマンスを向上するために、間欠的にのみ使用する特別な用途の復旧モデルです。完全復旧モデルでのバックアップの説明の大半は、一括ログ復旧モデルにも適用されます。このトピックでは、一括ログ復旧モデルに固有の検討事項のみを説明します。
注 |
---|
一括ログ復旧モデルで最小限にログに記録される操作の詳細については、「最小ログ記録が可能な操作」を参照してください。 |
一括ログ復旧モデルの使用は最小限に抑えることをお勧めします。ベスト プラクティスは、一連の一括操作の直前に一括ログ復旧モデルに切り替え、操作を実行してからすぐに完全復旧モデルに戻すことです。詳細については、「完全復旧モデルまたは一括ログ復旧モデルからの切り替え」を参照してください。
一括ログ復旧モデルのしくみ
すべてのトランザクションのログが完全に記録される完全復旧モデルに対し、一括ログ復旧モデルでは、最小限の一括操作しかログ記録されません。ただし、その他のトランザクションは完全にログ記録されます。一括ログ復旧モデルは、メディア障害からデータベースを保護し、一括操作に対しては最高のパフォーマンスを発揮し、使用されるログ領域も少なくて済みます。
ただし、一括ログ復旧モデルでは、一括ログ記録操作のため、変更をトランザクション単位で再キャプチャすることはできません。このため、これらの一括コピー操作でデータを損失する危険性が大きくなります。ログ バックアップに一括ログ記録された操作が含まれる場合は、そのログ バックアップ内の特定の時点に復元できません。復元できるのは、ログ バックアップ全体のみです。
一括ログ復旧モデルでは、ログ バックアップで一括操作をカバーした場合、そのログ バックアップには、ログ レコードと、一括操作によって変更されたデータ ページの両方が含まれます。このことは、一括ログ記録された操作の結果をキャプチャするために必要です。組み込まれたデータ エクステントにより、ログのバックアップが非常に大きくなる場合があります。また、ログをバックアップするには、一括ログ記録されたトランザクションが含まれているデータ ファイルへのアクセスが必要になります。影響を受けるデータベース ファイルの中にアクセスできないデータ ファイルがある場合は、トランザクション ログをバックアップできないので、そのログの中でコミットされていた操作がすべて失われます。
ログのバックアップ操作は、データ ページを追跡するために、エクステントごとに 1 つのビットを含む一括変更ビットマップ ページに依存しています。前回のログ バックアップ以降に一括ログ操作によって更新されたエクステントそれぞれにつき、ビットマップ内のビットが 1 に設定されます。これらのデータ エクステントは、ログ内のログ データの前にコピーされます。次の図は、ログ バックアップの作成方法を示しています。
重要 |
---|
完全復旧モデルまたは一括ログ復旧モデルでは、ログ レコードをアクティブに保つ他の要因が存在しない場合、完全バックアップが最初に実行されるまでの間、自動チェックポイントによってトランザクション ログの未使用の部分が切り捨てられます。最初の完全バックアップを実行した後は、トランザクション ログをバックアップしない限り、切り捨ては行われません。切り捨ての遅延要因の詳細については、「ログの切り捨てが遅れる原因となる要因」を参照してください。 |
一括ログ復旧モデルでのバックアップの制限事項
一括ログ復旧モデルには、次の制限事項があります。
一括ログ記録された変更が含まれるファイル グループが、ログ バックアップの実行までに読み取り専用になると、このファイル グループが読み取り専用の状態である間は、その後のすべてのログ バックアップに、これらの一括ログ操作によって変更されたエクステントが含まれるようになります。このようなログ バックアップは、完全復旧モデルよりも大きくなり、完了まで時間がかかります。
このような状況を防ぐには、ファイル グループを読み取り専用にする前にデータベースを完全復旧モデルに切り替え、ログをバックアップします。その後、ファイル グループを読み取り専用にします。
最後のログ バックアップの後に一括操作が実行されると、データベース内に一括変更が存在することになります。この場合、ログ バックアップの実行時には、すべてのファイルがオンラインであるか、または機能していないかのいずれかである必要があります。これは、一括ログ記録された操作が含まれているログをバックアップするには、対応する一括ログ トランザクションを含んでいるデータ ファイルへのアクセスが必要であるためです。
復元の制限事項については、「一括ログ復旧モデルを使用した復元」を参照してください。
一括ログ トランザクション後にデータベースを読み取り専用に設定した場合
一括ログ復旧モデルでは、一括ログ記録された変更がデータベースに含まれている場合に、ログ バックアップが正しく機能します。ただし、一括ログ操作後に、読み取り/書き込みデータベースが読み取り専用アクセスに変更されると、その後のログ バックアップで必要以上のデータがキャプチャされることがあります。これは、一括ログ記録された操作でどのデータ エクステントが変更されたかを追跡するためにデータ ファイルを更新できないためです。それ以降のすべてのログ バックアップにも同じ情報が含められます。
ベスト プラクティス データベースを読み取り専用に変更する前に、完全復旧モデルに切り替え、ログ バックアップを実行します。その後で、データベースを読み取り専用にします。実際には、読み取り専用データベースのログ バックアップを実行することには意味がありません。代わりに、データベースが読み取り専用になってから、データベースの完全バックアップかファイル バックアップの完全なセットのいずれかを実行します。復旧モデルの切り替え方法については、「完全復旧モデルまたは一括ログ復旧モデルからの切り替え」を参照してください。
注 |
---|
読み取り専用データベースのバックアップ方法については、「読み取り専用データベースのバックアップ」を参照してください。 |