トランザクションログとミラーリング-可能な最も愚かな説明を探す


8

まず、トランザクションログの概念に苦労していることを認めなければなりません。つまり、データベースで発生するすべてのトランザクションのログであることは理解していますが、タスク内のコンテキストに適切に配置することに関しては、明らかに何かが欠けています。ですから、質問に答える人なら誰でも、トランザクションログの背後にある理論を自由に拡張してください。

主な質問は-SQL Server 2008と2 GBのデータベースがあり、ミラーリングが必要です(12 GBのトランザクションログがあります)。そのデータベースをミラーリングしていない場合は、シンプルモードに切り替えるか、バックアップ後にログを切り捨てることができると思います。しかし、この場合、トランザクションログを管理したい場合はどうすればよいですか?私が理解しているように、データベースを簡単にミラーリングしたい場合は(フルバックアップを実行するだけ)、トランザクションログ全体を保持する必要があります。

これを回避する方法はありますか?理想的には、毎回MDFとLDFの両方を1つのファイルに保存するバックアップが可能であり、バックアップが実行された後、データベースのトランザクションログ(LDF)が0に減少したことを望みます。このシナリオの問題は、増分バックアップです-最初のバックアップの場合切り捨てられたログでは、後でミラーリングを行う場合、2番目のバックアップが最初のバックアップを参照する必要があると思います(つまり、1つではなく多数のファイルを保持することで立ち往生します)。

だから-この問題について誰かが私を啓発できますか?私はここで多くの穴を埋めようとしていることと、提案された「ソリューション」が最良のものではない可能性があることを理解していますが、誰かがトランザクションログの正しい方向に押し出してくれれば、ミラーリングへの影響と最良の結果が得られることを心から感謝しますそれらの2つの実践。

回答:


5

トランザクションログは、特定の時間にデータベースを復元するための重要な方法です。500 GBを超える大規模なデータベースがあり、完全バックアップからデータベースを復元する必要がある場合は、非常に時間がかかります。また、データベースを毎回フルバックアップする場合は、このバックアップにかかる時間を考慮してください。

SQL Serverの非常に簡単な概念は次のとおりです。

SQL Serverで保守計画(1)を作成します。

  • FullBackupを毎週D:\ yourbackup \ FullDBBackup.bakで実行する
  • D:\ yourbackup \ DiffBackup.bakで2日ごとに差分バックアップを実行する
  • 2時間ごとに実行D:\ Yourbackup \ Tranlogbackup.trnのトランザクションログをバックアップします。

SQL Serverで保守計画(2)を作成します。

  • D:\ yourBackup * .bakから8日間古いファイルをすべて削除します
  • D:\ yourBackup * .trnから3日間古いファイルをすべて削除します

この場合、特定の時間でデータベースを非常に高速かつ簡単にリカバリできます。SQL Serverは「バックアップ」ファイルを自動的に管理し、特定の時間範囲が経過すると古いファイルが削除されます。

ここでSQL Serverトランザクションログについて読むことをお勧めします。

http://www.sqlservercentral.com/articles/Design+and+Theory/63350/

SQL Serverでメンテナンスプランを使用するには、BING / google:D

本番環境に移行する前に、小さなテストデータベースを作成してテストする必要があります


システム全体が終了するまで停止できるので、完全バックアップと時間に問題はありません。回答に関する1つの質問-このシナリオではトランザクションログを切り捨てますか?そうでない場合、データベースを元に戻すには最新のFullDBBackup.bakのみが必要であることを理解していますか?特定の時点については気にしません-私が気にするのは、バックアップを実行するときに取得する最新バージョンのDBだけです。意味-トランザクションログは必要ありません。私はミラーリングのためだけにそれらを保持しています。それを回避する方法はありますか?
nikib3ro

2
1.ログを切り捨てることはできません:D 2. tranログのバックアップを取ると、SQL Serverはこのスペースをログファイルで再利用できるように解放します。単純なテストdbcc sqlperf( 'logpsace')はバックアップを回避し、バックアップ後に同じことを行います。そして最後に、あなたは、トランザクションログを必要とする...ちょうど私の例をテストする

私はついにテスト環境であなたの提案を実装するようになりました、そして今のところ私が見ているものが好きです。この権利を理解している場合はお知らせください。データベースを復元する必要がある場合は、最初に作成した完全バックアップを使用し、次に差分バックアップとトランザクションログを組み合わせて使用​​して、データベースを次の場所に復元できます。ある時点?私は正しいですか?また、ミラーリングの場合は、サーバーを停止して完全バックアップを取るだけでよいと思いますか?または、ミラーリングを設定するためにトランザクションログが必要ですか?あなたのすべての助けと答えを再びありがとう!
nikib3ro 2012年

3

ミラーリングを利用するには、データベースを完全復旧モードにする必要があり、ログファイルの増大を防ぐためにトランザクションログのバックアップを取る必要があります。ログバックアップが必要ない場合は、メンテナンスプランを使用してx時間後にそれらをパージしますが、実行する必要があります。

環境をクリーンアップするには、ミラーリングを削除し、リカバリモードをシンプルに切り替え、推奨されるPaul Randal Wayを使用してログファイルのサイズを小さくし、フルリカバリモードに切り替えて、フルバックアップとログバックアップをセットアップしてから、再初期化します。鏡。ミラーリングの実行中にログサイズを小さくすることもできますが、最初に削除する方が簡単です。1 GBは、データベースを再初期化するのに悪くないはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.