web-dev-qa-db-ja.com

スケジュールに従ってトランザクションログをバックアップおよび切り捨てる最良の方法

私はDBAではありませんが、DBAの帽子をかぶってSQL Serverインスタンスのメンテナンスプランをセットアップする必要があります。

しばらくの間、SSISの夜間プロセスを実行してSQLタスクを実行してくださいバックアップを実行します-基本的にmaster.dbo.xp_create_subdirを実行して宛先フォルダが存在し、次にBACKUP DATABASE [DbName] TO DISK = 'G:\Backups\DbName\DbName.bak' WITH INIT

そのタスクが失敗すると、残りのプロセスは中止され、通知が届きます。翌朝、トランザクションログのドライブがいっぱいになり、手動で切り捨てて先に進みます。 ..ストーリーが繰り返され、トランザクションログが再び使用可能なディスク領域を超えてしまうまで。

「手動切り捨て」スクリプトは次のようになります。

use Staging;
alter database Staging set recovery simple
alter database Staging set recovery full
dbcc shrinkfile ('Staging_log', 0, truncateonly);
go

だから私はこれに飽きてきており、代わりに適切にやってみようし、手順 here を実行して実際の保守計画

SQL Server maintenance plan

ことは、私はこれをこれまでにしたことがないので、いくつか質問があります:

  • このようなトランザクションログをバックアップすると、自動的に切り捨てられますか、それとも他に何かする必要がありますか?
  • データとトランザクションログのバックアップを同時に実行しても大丈夫ですか?そうでない場合、これを行う適切な方法は何ですか?
  • バックアップファイルは、サーバー上のすべてのファイルを取得して別の場所に保存する別のプロセスによって夜間に取得されます。2日後にバックアップセットを期限切れにするのは良い考えでしょうか。それらを完全に期限切れにする必要がありますか?
  • クリーンアップタスクは、G:\Backupsのサブフォルダーにある「古い」.bakファイルと.trnファイルをそれぞれ削除します。それは理にかなっていますか?
  • SSISでこれを行う方が良いので、バックアップが失敗した場合や失敗した場合にETLを失敗させることができますか?それとも私のETLプロセスは気にすべきですか?

これが1つの投稿に対して多すぎる質問の場合は申し訳ありません。必要に応じて、編集して複数の質問をします。それらはすべて密接に関連していると思います。

9
Mathieu Guindon

夜間にのみSSISが書き込みを行い、昼間はすべて読み取りです-毎日の回復のみが必要です。

ビジネスニーズに基づいて復旧モデルを選択する必要があります。

  • どのくらいの量のデータビジネスが失われ、同時に生き残ることができますか?

上記の回答に基づいて、慎重に データベース復旧モデル を選択する必要があります。

簡単に言えば(一括ログ復旧モデルについては説明していません)

  • 完全復旧モデルでは、ポイントインタイム復旧を可能にするログバックアップが可能です。
    • ログの切り捨て は、トランザクションログのバックアップを取るときに発生する可能性があります。つまり、ログファイルスペースは、各ログバックアップの後に再利用され、膨張しません。
  • 単純復旧モデルでは、完全バックアップのみを実行できます。ポイントインタイムリカバリは不可能です。
    • ログの切り捨て は、チェックポイントが発生した場合(手動または自動)にのみ発生します。つまり、定期的な完全バックアップを実行するため、トランザクションログについて心配する必要はありません。CHECKPOINTが、ログファイル。

ログの切り捨てはトランザクションログファイルのサイズの物理的な縮小ではないことを思い出してくださいこれは、トランザクションログファイルの非アクティブな部分がreusableとしてマークされていることを意味します

したがって、トランザクションログファイル(およびデータファイル)を適切にプリサイズする必要があります。ログファイルを拡張すると、自動拡張イベントが開始されます(データベースが最後の手段として自動拡張に設定されている場合)。私の答えを確認してください- 自動拡張-使用率?


メンテナンスプランを破棄する を実装することを強くお勧めします[スマートメンテナンスソリューション-これは簡単で柔軟性があり、ベストプラクティスに従います]- 5 。 -Olaのバックアップソリューション (および インデックスメンテナンスソリューション も同様)


あなたの質問に答えましょう:

このようなトランザクションログをバックアップすると、自動的に切り捨てられますか、それとも他に何かする必要がありますか?

バックアップを追加したり、期限切れに設定したりしないでください。彼らは大きな混乱を引き起こします。 INITを使用し、日時スタンプを使用して個別のログバックアップを作成します。メンテナンスが簡単。 Olaのバックアップソリューションを使用してください。このソリューションは、古いバックアップを削除するのにも柔軟です。

データとトランザクションログのバックアップを同時に実行しても大丈夫ですか?そうでない場合、これを行う適切な方法は何ですか?

完全バックアップは、Tログバックアップには影響しません。完全バックアップには、必要なトランザクションログのみが含まれているため、復元の際に、データベースは、完全バックアップのデータ読み取り部分が完了した時間とトランザクションの一貫性を保つことができます。チェック- フルバックアップに含まれるトランザクションログの量?

また、フルバックアップ中のログバックアップでは、トランザクションログは切り捨てられません。ログバックアップ(の組み合わせ)(s)完全バックアップが終了すると、ログが切り捨てられます。

バックアップファイルは、サーバー上のすべてのファイルを取得して別の場所に保存する別のプロセスによって夜間に取得されます。2日後にバックアップセットを期限切れにするのは良い考えでしょうか。それらを完全に期限切れにする必要がありますか?

クリーンアップタスクでは、G:\ Backupsのサブフォルダーにある「古い」.bakファイルと.trnファイルをそれぞれ削除します。それは理にかなっていますか? SSISでこれを行う方が良いので、バックアップが失敗した場合や失敗した場合にETLを失敗させることができますか?それとも私のETLプロセスは気にすべきですか?

上記の両方について、Olaのバックアップ保守ソリューションを使用してください。古いファイルを削除します。

7
Kin Shah