web-dev-qa-db-ja.com

SQL Server:コールドバックアップ、サービスのシャットダウン?

私たちの同僚の1人が、SQL Serverの「コールド」バックアップを実行しているため、サービスをシャットダウンしてから何らかの方法でバックアップを取っていると話しました。これはすべて間違っていると思います!私は正しいですか?データベースがFULLモードのときは、完全なバックアップ、差分バックアップ、ログバックアップを実行する必要があると思います。

また、バックアップ後にSQL Serverサービスを開始すると問題が発生し、.mdfファイルが見つかりません。これがなぜ彼らに起こっているのか、あなたは何か考えがありますか?

2
jrara

そのようなごみを聞いたことがない。

FULLまたはBULK LOGGEDモードは、ログのバックアップが必要であることを意味します。 SIMPLEはそうしないことを意味します。常に完全バックアップが必要です。

MDFおよびLDFファイルをコピーすることはバックアップではなく、SQL Serverをシャットダウンするときにトランザクション中である場合、データを失う可能性があります**。

Mdfファイルが欠落している場合は、指のトラブルまたはこの「バックアップ」方法のためにMDFファイルが存在しないことを意味します。 SQL Serverのシャットダウン時に誰かがファイルを削除したりドライブを削除したりしない限り、mdfを失うことはありません

**編集:

データを失うということは、「開いているトランザクションはコミットされない」という意味です。通常、クライアントコードは再試行を処理せず、たとえばエラーをログに記録しますが、書き込むデータはログに記録しません。

コミットされたトランザクションのデータは、古いものでも新しいものでも安全です

7
gbn

理想的ではありませんが、コールドバックアップはデータベースをバックアップするための完全に正当な方法です。データベースがシャットダウンされていると想定されているため、データベースがオンラインである「ホット」または「ウォーム」(1)のバックアップではなく、「コールド」の用語が使用されます。

コールドバックアップの欠点は、ファイルの容量に関係なく、データベースのファイル構造全体をコピーすることです。したがって、1 TBのデータベースに10 MBのデータしかない場合は、1 TBのデータファイルをコピーすることになります。ホットバックアップのアプローチは、実際にデータが存在するデータベース内のページのみがバックアップされるという点で、異なる方法で機能します。ホットバックアップがサポートするある程度の圧縮もあります。一般的に、ホットバックアップはコールドバックアップよりも高速でサイズが小さいです。

どちらの場合も、一貫性のあるバックアップが作成されます。


(1)ウォームバックアップは、プラットフォームによっては特殊なケースです。一部のデータベースプラットフォームは、データベースがオンラインのときにデータベースの「静止」をサポートします。つまり、データファイルへの書き込みアクティビティが停止します。それでもデータベースにクエリを実行でき、同時にデータベースファイルのコールドバックアップを効果的に実行できます。なぜこのアプローチに従うのでしょうか?一部のストレージサブシステム(EMCなど)は、ボリュームを別のボリュームにスナップショットして、最初のボリュームを2番目のボリュームにほぼ瞬時に効果的にミラーリングします。これを使用して、本番データを開発環境またはスタンバイシステムにミラーリングできます。このスナップショットプロセスの間、データベースを一貫した状態にする必要があります。これは通常、わずか数秒です。したがって、「ホット」システムと「コールド」バックアップは、「ウォーム」バックアップに相当します。

2
Mitch Schroeter

一部の人々はこの道を進み、特にオラクルの世界の人々はこのように考えています。 SQL Serverでは、バックアップを実行するためにSQLを停止する必要はありません。 BACKUP DATABASEコマンドを使用するだけで、リカバリモードとバックアップ要件に応じて、必要に応じてFULL、DIFFERENTIAL、およびLOGバックアップを実行してデータベースをバックアップできます。

1
mrdenny

ダウンタイムがある場合は、SQL Serverを停止してmdfファイルとldfファイルをコピーすることで、データベースをバックアップできます。 SQL Serverが停止したため、データベースは「完全に」シャットダウンされているため、再接続するのに適した状態です。 SQL Serverがトランザクションログを読み取るときに、アクティブなトランザクションをロールバックまたはロールフォワードできます。

ほとんどのユーザーは、サーバーで何らかのメンテナンス(サーバーの移動、ストレージスペースの再割り当て、またはハードウェアの保守)を行っているときに、MDFおよびLDFファイルをコピーします。私もこれを行っています。本番環境のレプリカをテスト環境に取り込むためのオプションとして、サーバーのメンテナンスのためにサービスを停止したときに、ファイルをコピーする時間がありました。

問題の可能性があるファイルを「コピー」するのではなく、「移動」している場合。 SQL Serverは、バックアップを開始すると、ファイルが最後に配置された場所を記憶しているため、ファイルがそこにない場合。

より優れたバックアップソリューションに関する多数の記事を読むことができます。 SQLバックアップを実行することには、物理​​ファイルを毎回コピーするよりもメリットがあります。 1つは完全バックアップであり、データベースが完全復旧モードの場合、データベースサイズの制御に役立ちます。次に、主な問題はダウンタイムを必要としないことです。

1
user507