web-dev-qa-db-ja.com

Windows Serverバックアップを使用してSQL Serverデータベースをバックアップするにはどうすればよいですか?

どうやらWindows Serverバックアップでは、SQL Serverデータベースのバックアップがsomeサポートされています。

アプリケーションを回復する機能。Windows Serverバックアップは、Microsoft®SQLServer®などのアプリケーションに組み込まれているVSS機能を使用して、アプリケーションデータを保護します。 [ソース: TechNet ]

さらに、人々は、Windows Serverバックアップが SQL Serverで何らかのバックアップ操作をトリガーする のように見えると報告しています。

ただし、Windows Serverバックアップを使用してSQL Serverデータベースをバックアップする方法の正確な(公式)ドキュメントが見つかりません。

  • バックアップする必要がありますか.mdf.mdf そしてその .ldf
  • オンラインですか、それともオフラインですか?
  • この方法でバックアップされたSQL Serverデータベースを復元する公式の手順は何ですか?
  • 増分/差分バックアップを行う際に考慮すべき特別なことはありますか?
  • このすべてがどこに文書化されていますか?

(SQL Serverメンテナンスプランでバックアップを行う方法を知っています。sqlmaint.exe、T-SQL BACKUPおよびSQL Serverエージェント。 Windows Server Backup(どうやら?)が提供する代替手段に興味があるだけです。)

11
Heinzi

Windows Serverバックアップは、SQL Serverのバックアップツールとしては意図されていません。

...ただし、この設計は、ITプロフェッショナルではない /小規模な組織や個人に特に適しています...

Windows Server Backup Step-by-Step Guide for Windows Server 2008 セクションからの引用:「Windows Server Backupを使用する必要があるのは誰ですか?」

あなたが引用したセクションは基本的に、Windows Server Backupが起動すると、WindowsのVSS機能をトリガーすると言っています。 SQL Serverは、ボリュームシャドウコピーが発生していることを認識し、SQL Server Writerサービスを使用して、データベースファイル(* .mdf、*。ndf、*。ldf)のコピーを確実に実行できるようにします。

SQL Serverライターサービスの目的は、次のように定義されます。

実行中、データベースエンジンはロックされ、データファイルに排他的にアクセスできます。 SQLライタサービスが実行されていない場合、Windowsで実行されているバックアッププログラムはデータファイルにアクセスできないため、SQL Serverバックアップを使用してバックアップを実行する必要があります。

SQLライターサービスを使用して、WindowsバックアッププログラムがSQL Serverの実行中にSQL Serverデータファイルをコピーできるようにします。

SQL Writer Service セクションからの引用: "目的"

つまり、Windows Serverバックアップで発生するのは、基本的にこれだけです。

SQL Serverの実行中にWindows Serverバックアップで作成されたバックアップはである必要がありますが、まだディスクに書き込まれていないトランザクションはボリュームシャドウコピーにありません。オンライン中にデータベースのスナップショットが取得されました。

ただし、MSDNの記事 Snapshot Backups には次のように記載されています。

次のタイプのバックアップのみがスナップショットバックアップになります。

  • 完全バックアップ
  • 部分的なバックアップ
  • ファイルのバックアップ
  • 差分データベースバックアップ。これらは、ベンダーがVSSインターフェイスを使用している場合にのみサポートされます。

さらに:

このトピックで前述したことを除いて、スナップショットバックアップは、対応する従来のバックアップと機能的に同等です。スナップショットバックアップは、非スナップショットフルバックアップ、差分バックアップ、およびログバックアップを使用した復元シーケンスで使用できます。他のバックアップと同様に、スナップショットバックアップはmsdbデータベースで追跡され、スナップショットバックアップはbackupset.is_snapshot = 1で識別されます。msdbの詳細については、msdbデータベースを参照してください。

SQL Serverは、スナップショットバックアップからのオンラインリストアをサポートしていません。スナップショットバックアップを復元すると、データベースが自動的にオフラインになります。断片的なリストアにはスナップショットバックアップを組み込むことができますが、すべてのリストアシーケンスはオフラインリストアです。断片的な復元の詳細については、断片的な復元の実行を参照してください。

あなたの質問に答えるには:

  • .mdfをバックアップする必要があるだけですか? .mdfと.ldf?
  • オンラインですか、それともオフラインですか?
  • この方法でバックアップされたSQL Serverデータベースを復元する公式の手順は何ですか?
  • 増分/差分バックアップを行う際に考慮すべき特別なことはありますか?
  • このすべてがどこに文書化されていますか?

答え:

  1. はい、.mdfファイルと.ldfファイルのWindows Serverバックアップ(VSS)コピーを実行できます。バックアップで一貫している必要がありますが、データベースは復元後にオフラインになります。
  2. SQL Serverが停止している、データベースがデタッチされている、データベースがオフラインの場合、.mdfファイルと.ldfファイルのVSSコピーは100%一貫しています。
  3. データベースがオフライン状態で復元されるため、Windows Serverバックアップで実行されるデータベースを(特定の時点まで)復元する方法がわかりません。 OFFLINE状態のデータベースはこれ以上復元/回復できず、データベースをONLINEにすると、データベースは完全に回復したと見なされます。特定の時点へのデータベースの復元を確実に実行できるように、SQL Serverのフルバックアップ、DIFFバックアップ、およびTLOGバックアップを分離することをお勧めします。
  4. トランザクションログは、Window Serverバックアップで作成されたスナップショットの一部ではないため、追加で実行する必要があります。差分スナップショットは、バックアップシーケンスの一部としてサードパーティベンダーによってサポートされていますが、Windows Serverバックアップは差分バックアップを実行できないようです。この場合、追加の差分バックアップも実行する必要があります。 (3を参照)
  5. 異なる参照

実際の実装で説明

私たちの環境では、VMwareがスナップショットを実行しており、DBAがCommvaultを使用してSQL Serverダンプを実行している同様の状況があります。バックアップ履歴は次のようになります。

DBNAME  TYPE BACKUPSET_NAME            IS_SNAPSHOT BACKUP_START_DATE        
------- ---- ------------------------- ----------- -----------------------  
DB_NAME  Full  NULL                    1           2016-12-10 18:23:59.000  
DB_NAME  Full  CommVault Galaxy Backup 0           2016-12-10 20:07:41.000  
DB_NAME  Log   CommVault Galaxy Backup 0           2016-12-11 06:00:40.000  
DB_NAME  Full  NULL                    1           2016-12-11 18:24:00.000  
DB_NAME  Diff  CommVault Galaxy Backup 0           2016-12-11 20:03:38.000  
DB_NAME  Log   CommVault Galaxy Backup 0           2016-12-12 06:02:29.000  
DB_NAME  Log   CommVault Galaxy Backup 0           2016-12-12 07:02:17.000  

VMwareスナップショットは、MSDBデータベース履歴テーブルにIS_SNAPSHOT = 1およびFULL(毎日実行される各VMwareスナップショット)。ネイティブ(よく使用するCommvault)SQL Serverバックアップは、FULL、DIFF、およびTLOGバックアップを使用して実行されます。これらのバックアップは、IS_SNAPSHOTとしてマークされておらず、msdbデータベースのバックアップテーブルに、追加のFULL(週に1回)、DIFF(隔日)、およびLOG(毎時)のエントリとして存在します。

このセットアップでは、スナップショット日時への復元を実行してからデータベースをオンラインにするか、「ネイティブ」のSQL Serverバックアップを使用して任意の時点への個別の復元を実行できます。

5

SQLバックアップはデータをコピーするだけでなく、ログも切り捨てます。マニュアルページには、バックアップファイルをその場で圧縮するなど、数百のオプションが役立ちます。

Vssバックアップは、フリーズした仮想マシンをコピーするため、またはSANで静的イメージをバックアップするためにLUNをスナップショットするために使用されましたが、バックアップは電源と同じように「クラッシュコンシステント」になります。中断し、実際には一貫していません。

関連した

できません。または、少なくともあなたはおそらくそうすべきではありません。 SQL Serverデータベースに関する限り、ネイティブバックアップがサポートされている方法です。

TechNetの記事の内容を誤解していると思います。引用したコメントは、SQL ServerデータベースにWindows Serverバックアップを使用できることを示していません。実際には、Windows ServerバックアップがSQL Serverで使用されているのと同じボリュームシャドウコピーサービスを利用していることを強調しています。詳細:TechNet: SQLライターサービス

1
shiitake

I think「スナップショットバックアップ」と呼ばれる特別なバックアップタイプを使用します。

SQL Server 2008のドキュメントから:

SQL Serverスナップショットバックアップは、Microsoft Windows Server 2003ボリュームシャドウコピーサービス(VSS)、およびこのフレームワークを使用するすべてのバックアップソフトウェアとストレージソフトウェアでも使用されます。詳細については、SQLライターサービスを参照してください。

それはすべて私には非常に不明確です。特に、これがトランザクションログを切り捨てるかどうか。

0
StackzOfZtuff