SQL Server のリカバリ モデル
Microsoft SQL Server のリカバリ モデルは、Management Studio、または ALTER DATABASE ステートメントを通じて変更されるデータベース設定です。SQL Server には、完全、一括ログ、単純の 3 種類のリカバリ モデルがあります次に、これらについて簡単にまとめます。
完全リカバリ モデル
完全リカバリ モデルでは、特定の時点の(または障害発生時の)トランザクション ログをバックアップしている限り、Point-in-Time Recovery(PITR)が可能となります。PITR とは、データベースを特定の時点までリカバリすることを意味し、コミットされたトランザクションがすべてリカバリされ、不完全なトランザクションがすべてロールバックされます。
特定の時点までデータベースをリカバリするには、以下の作業が必要です。
- 現在アクティブなトランザクション ログをバックアップする。
- リカバリを行わずに最新の完全バックアップをリストアする。
- リカバリを行わずに最新の差分バックアップをリストアする。
- リカバリを行わずにトランザクション ログ バックアップを順番にリストアする。
- 最後のトランザクション ログ バックアップをリカバリ込みでリストアする。
完全リカバリ モデルは重要なデータを含む運用データベースに使用されます。
一括ログ リカバリ モデル
一括ログ リカバリ モデルを使用しているデータベースでは、一括操作を SQL Server のトランザクション ログに記録します。これには、CREATE INDEX、SELECT ... INTO、WRITETEXT、UPDATETEXT、BULK INSERT が含まれます。一括操作の後にメディアで障害が発生した場合、トランザクション ログに記録されている情報では、これらの変更をリカバリするには不十分です。データベースを障害が発生した時点までリカバリすることは可能ですが、一括操作によってデータが変更されていた場合、データの整合性は失われます。リカバリのプロセスは、完全リカバリ モデルと同じです。
他のユーザがデータベースにアクセスしない時間に定期的に一括操作を実行している環境では、一括ログ リカバリ モデルが使用される場合があります。あるいは、完全リカバリ モデルをほとんどの場合で使用し、一括操作を行う際にデータベースの完全なリカバリを行いデータベースのパフォーマンスを向上させたいときにトランザクション ログで使用されているディスク領域を節約するため、一括操作時に一括ログ リカバリに切り替えることもできます。
単純リカバリ モデル
単純リカバリ モデルでは、リカバリにトランザクション ログを使用しません。単純リカバリ モデルを使用する場合は、完全バックアップのみをリカバリすることができます。このため、データは最新のバックアップにのみリカバリ可能で、PITR はできません。最後のバックアップ以降にデータベースに加えられた変更は失われます。
単純リカバリ モデルを使用する利点は、必要なトランザクション ログとログ スペースの管理が楽であることです。単純リカバリ モデルは、開発用データベースまたはあまり頻繁に編集されないデータベースに使用することができます。