web-dev-qa-db-ja.com

トランザクションログバックアップが大きくなりすぎないようにするために、WITH INITを使用しても問題ありませんか?

私はまだSQLのバックアップジョブを理解するのに苦労しています。

現在、完全復旧モデルを使用したSQL Server 2005インスタンスがあります。

毎週データベース全体のバックアップを行っています。

BACKUP DATABASE [MyDatabase]
TO DISK = N'E:\Database Backups\MyDatabase.Bak'
WITH INIT, NAME = N'MyDatabase.Bak'

そして、1日1回の差分バックアップ

BACKUP DATABASE [MyDatabase]
TO DISK = N'E:\Database Backups\MyDatabase_Diff.Bak'
WITH INIT, DIFFERENTIAL, NAME = N'MyDatabase_Diff.Bak'

現在、トランザクションログのバックアップを1時間ごとにスケジュールする方法を考えているので、最大で1時間分の作業が失われます。

BACKUP LOG [MyDatabase]
TO DISK = N'E:\Database Backups\MyDatabase_Log.Bak'

私の問題は、ストレージスペースが限られていることと、ログファイルが大きくなりすぎないようにすることです。使ってもいいですか WITH INITトランザクションログバックアップで、毎時間新しいファイルを作成するように強制しますか?または、最後の差分バックアップ以降のすべてのトランザクションログバックアップを、日中の特定の時点に復元する必要がありますか?

最後の差分以降すべてのコピーを保持する必要がある場合、バックアップを実行するたびにリセットするように指示する方法はありますか?

4
Rachel

いいえ、同じファイルへのトランザクションログバックアップにWITH INITを使用しないでください。その場合、完全/差分バックアップの間にそれらを取得しないこともできます。

通常は、毎回ログを一意のファイルにバックアップします。それぞれに名前に何らかのタイムスタンプの形式があり、.bakではなく.trn拡張子が付いています。これは主に管理を目的としています。ログバックアップがいつ行われたか、安全に削除できるかどうか、ポイントインタイムリカバリオペレーションの一部であるかどうかなどを簡単に識別できます。

6
Aaron Bertrand

投稿いただきありがとうございます。

したがって、せいぜい1時間分の作業が失われるだけです。

トランザクションログがデータファイルとは異なるディスクアレイにある場合は、データアレイ障害の場合に「 ログバックアップの末尾 ケースを実行します。これにより、データ損失が最小限に抑えられ、その時間を失うことさえありません。

トランザクションログバックアップでWITH INITを使用して、1時間ごとに新しいファイルを作成するように強制できますか?

いいえ、次の質問については、「ポイントインタイム」リカバリを行うには、最後の差分バックアップ後にすべてのトランザクションログバックアップが必要になります。それらを上書きしないでください、それらをすべて保持しないと、それらは役に立たなくなります。

OlaHallgren によるSQL MVPによる最も推奨されるバックアップ/メンテナンススクリプトの1つをチェックすると、多くのエラー処理と最適化を実行できます。 1つの大きなファイルが不要な場合は、トランザクションログのバックアップごとに新しいファイル名を指定して、必要なときにすべてのファイルを復元できるようにします。

緊急の場合は、この投稿で restoreスクリプト の生成方法を確認してください。ただし、必要がない場合は、PRODで実行していないことをダブルチェックしてください。それはあなたのデータベースを上書きします。最初に別のサーバーでテストしてください。

4
Ali Razeghi