web-dev-qa-db-ja.com

完全復旧から単純復旧に切り替える

これは私の理解に役立つ理論的な質問です。 SQL Serverで完全復旧モデルから単純復旧モデルに切り替えるプロセスは何ですか?

プロセスは次のとおりです。

  1. 切り替え前にトランスログバックアップをシンプルにして、切り替えまでのポイントインタイムリカバリを実行できるようにします。
  2. シンプルに切り替えます。
  3. おそらく、DBCC SHRINKFILEをTRUNCATE ONLYで実行して、ディスク領域を解放してください。
  4. おそらくデータベースを変更して、トランスログファイルのサイズを小さくしてください。
  5. 完全バックアップを実行します。

ポイント1についての私の主な質問だと思います。トランスログのバックアップを取らないと、最終的なトランスログのデータが単純に破棄されるか、トランスログの単純なバックアップに切り替えられます(そうは思いません)。

また、チェックポイントで新しいトランザクションをトランスログからデータファイルにプッシュできるように、SIMPLEへの完全バックアップ後切り替えを実行することをお勧めします。

5
Steve

私見MUST take transaction log backup before swithching to simple recoveryそれはPITの回復に役立つだけでなく、 BOL Article で文書化され推奨されています。それは害を及ぼすことはなく、あなたはフェイルセーフを持っています。

データベースの負荷が比較的少ない場合は、復旧モデルを変更することをお勧めします。ピーク時に変更できますが、復旧モデルを変更するとデータベースがロックされ、負荷が高い場合は遅延が発生する可能性があります。

完全復旧から単純復旧に変更しても、トランザクションや変更は失われません。復旧モデルを変更すると、コミット可能なトランザクションをコミットするチェックポイントが強制されます。復旧モデルを単純な自動チェックポイントに変更すると、トランザクションログが切り捨てられます(長時間実行されているトランザクションがログを保持していない場合)

ポイント3と4は完全に必須ではありませんが、特別な理由がありますか?

ポイント5は必須であり、単純なリカバリでは少なくともデータベースのフルバックアップを毎日実行する必要があります。ただし、データベースのバックアップは、RPOとRTOが合意したものに従う必要があります。 RTOを削減するために、単純なリカバリで差分バックアップを実行することもできます。

2
Shanky

Simpleに切り替えると、最後の(データベースファイル)バックアップ以降、Trans Logは操作のログを維持しなくなります-スイッチの時点で、すべてのトランザクションはメインデータベースファイルにコミットされているため、破棄されません-それらは破棄されますデータベースファイルで既に有効です。

あなたのポイント1は(私の意見では)実行する価値がありません-一度SIMPLEに切り替えたら、すべてのデータを含むデータベースファイルをバックアップする必要があります。

完全復旧モデルは、データベースファイルを毎回バックアップする必要がないようにのみ存在することに注意してください(完全復旧モデルでは、復旧プロセスはメインデータベースファイルを復元してから、トランザクションログバックアップを復元します)。 SIMPLEモデルでは、回復プロセスはメインデータベースファイルの復元のみです。

私が言おうとしていることは、できるだけ早く(パフォーマンスとトランザクションのタイプに応じて)、トランザクションログで見つけることができるトランザクションは、メインデータファイル(mdf、ndf)にコミットされ、バックアップ時の.bakファイル。したがって、SIMPLEモデルでは、.bakを実行した時点に復元できます。FULLモデルを使用すると、最後に.trn(トランザクションログバックアップ)を実行した時点に復元できます。複数のtrnバックアップがある場合、 Bak + trn + trn + trnの復元になります(最後のベイク以降に3つのtrnバックアップを取っている場合)。

異なる復旧モデルの唯一の目的は、バックアップ戦略と、毎回ベイクを行わないことで節約される時間です。

入力しましたが、なぜ質問したのかわかります!

完璧な英語ではありませんが、これはさまざまなモデルの比較的良い内訳と、それらを使用する理由を提供すると思います: http://www.todo-backup.com/backup-resource/sql-backup-software /three-sql-server-recovery-models.htm

これは私があなたのリストをどうするかです:

  1. シンプルに切り替えます。
  2. データファイル(.bak)の完全バックアップを実行する
  3. おそらく、DBCC SHRINKFILEをTRUNCATE ONLYで実行して、ディスク領域を解放してください。
  4. おそらくデータベースを変更して、トランスログファイルのサイズを小さくしてください。
  5. 完全バックアップを実行します。
  6. フルに切り替えます(元に戻すと思います!??!)

注:心配な場合は、1の前にもバックアップを行ってください。 3と4はまったく別の質問なので、そのままにしておきます。 ( http://www.sqlskills.com/blogs/paul/why-you-should-not-shrink-your-data-files/

2
MHSQLDBA