MS SQLでのログとデータベースの回復のキロメートル

または、長いバックアップチェーンからデータベースを簡単に復元する方法







はじめに



SQL Serverを使用している場合、おそらく完全かつ単純なデータベース回復モデルについて聞いたことがあるでしょう。 単純なモデルではバックアップ時にのみデータを復元でき、完全なモデルではトランザクションログのバックアップコピーを定期的に作成するだけでよいことをご存知かもしれません。 ただし、フルモデルでデータを復元するには、トランザクションログのバックアップコピーを特定の順序で「ロール」する必要があります。 これは、SSMSを使用して問題なく実行できますが、バックアップが作成されたSQL Serverでのみ可能です。 別のサーバーに復元するには、T-SQLスクリプトを手動で記述する必要があります。 また、バックアップチェーンが長いほど、スクリプトが長くなり、作成にかかる時間が長くなります。 同じ理由で、管理者は、データベースのコピーを別のSQL Serverに展開する必要がある場合、既に作成されたバックアップをほとんど使用せず、新しい完全バックアップを作成することを好みます。 ただし、このような手順は、サーバーの負荷が高いため、大規模なデータベースでは実際の問題になる可能性があります。 さらに、サーバーが "クラッシュ"した場合、原則として、回復のために長いT-SQLスクリプトを作成する時間はありません。 そのようなときは、できるだけ早く、不必要な手間をかけずにすべてを行う必要があります。



Habré(たとえば、 ここ )を含むインターネットでは、T-SQL回復スクリプトを自動的に構築する問題を解決するさまざまな方法を見つけることができます。 基本的に、これらはバックアップファイルの名前に基づいたさまざまなスクリプト、または( msdbデータベースへの)バックアップの履歴に対するソースサーバーへの要求に基づいています。 この記事では、バージョン1.6以降のMS SQLのクイックメンテナンスとバックアップに登場したXMLリカバリプランの機能を確認します。



ユーティリティ自体の概要については、 このリンクの記事または公式Webサイトを参照してください 。 ネットワークフォルダーにXMLリカバリプランをバックアップとともに保持することで、T-SQLスクリプトの準備に時間を浪費することがなくなります。 バックアップチェーンの長さに関係なく、数回クリックするだけでデータベースを別のSQL Serverに復元できます。 また、これをスケジュールまたはテストサーバーまたは運用サーバーで実行して、たとえば、バックアップチェーン全体をチェックしたり、データベースコピーを更新したりすることもできます。



XMLリカバリプランとは何ですか?



XMLリカバリプランは、1つ以上のデータベースの復元に必要な順序でバックアップファイルの名前をリストするXMLファイルです。 サンプルXMLファイルの内容:



<?xml version="1.0" encoding="cp866"?> <RestorationPlanInfo xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ScriptManagerServer.Core.ScriptManagerServerCore.BackupRestore"> <Version>1</Version> <ServerName>London</ServerName> <ServerVersion>10</ServerVersion> <ServerDescriptrion>Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) </ServerDescriptrion> <CreationDate>2016-02-16T17:00:04.65625+03:00</CreationDate> <Databases> <RestorationPlanDbInfo> <Name>Northwind</Name> <RestorePoint>2016-02-16T17:00:02</RestorePoint> <Files> <RestorationPlanDbFileInfo> <FileName>London\Northwind\Full\20160216_155457_London_Northwind_Full.bak</FileName> <BackupType>Full</BackupType> <Position>1</Position> <BackupStartDate>2016-02-16T15:54:57</BackupStartDate> <FirstLsn>58000000021900037</FirstLsn> <LastLsn>58000000023500001</LastLsn> <StopAt i:nil="true" /> </RestorationPlanDbFileInfo> <RestorationPlanDbFileInfo> <FileName>London\Northwind\Diff\20160216_162546_London_Northwind_Diff.bak</FileName> <BackupType>Differential</BackupType> <Position>1</Position> <BackupStartDate>2016-02-16T16:25:47</BackupStartDate> <FirstLsn>58000000024300034</FirstLsn> <LastLsn>58000000025800001</LastLsn> <StopAt i:nil="true" /> </RestorationPlanDbFileInfo> <RestorationPlanDbFileInfo> <FileName>London\Northwind\Log\20160216_163000_London_Northwind_Log.trn</FileName> <BackupType>Log</BackupType> <Position>1</Position> <BackupStartDate>2016-02-16T16:30:01</BackupStartDate> <FirstLsn>58000000024300001</FirstLsn> <LastLsn>58000000025800001</LastLsn> <StopAt i:nil="true" /> </RestorationPlanDbFileInfo> <RestorationPlanDbFileInfo> <FileName>London\Northwind\Log\20160216_170001_London_Northwind_Log.trn</FileName> <BackupType>Log</BackupType> <Position>1</Position> <BackupStartDate>2016-02-16T17:00:02</BackupStartDate> <FirstLsn>58000000025800001</FirstLsn> <LastLsn>58000000025800001</LastLsn> <StopAt i:nil="true" /> </RestorationPlanDbFileInfo> </Files> </RestorationPlanDbInfo> </Databases> </RestorationPlanInfo>
      
      





XMLファイルは常にバックアップルートフォルダーにあり、バックアップファイルへの相対パスが含まれています。 このような組織では、ネットワークフォルダーなどの別の場所にファイルをコピーした後、関連性を失わないようにすることができます。



XMLプランの作成



このプログラムでは、次の2つの方法でXMLプランを作成できます。











XMLファイルを作成する前に、プログラムはSQL Server Management Studioが行う方法と同様に、 mdsbシステムデータベースに格納されている情報からバックアップのシーケンスを決定します。 最初と2番目の方法の場合、XMLプランには、データベースを可能な最後の状態に復元するために必要な一連のバックアップが含まれます。



重要な機能は、XMLプランを作成するときに、プログラムが常にバックアップファイルの存在をチェックすることです。 少なくとも1つのファイルが見つからない場合、プログラムはエラーを返します。 このようにして、チェーン全体の整合性がさらに制御されます。 タスクを使用してXMLプランを作成する場合、不足しているバックアップをソースサーバーから自動的にコピーできます。 これを行うには、タスクに適切な属性を設定する必要があります。



XMLリカバリー



XMLプランを使用したデータベースの回復は、次の2つの方法で実行できます。



1.手動で。 これを行うために、プログラムには、サーバーのツリービューのコンテキストメニューから[XMLプランから復元]コマンドによって呼び出される特別なウィンドウがあります。









フォームで、XMLファイルと、バックアップを復元するデータベースを選択する必要があります。 同じ名前のデータベース、一時データベース、または指定されたデータベースに復元できることに注意してください。 一時データベースへのリカバリモードは、バックアップチェーンの確認に便利です。 指定したデータベースのモードは、たとえば、ディスク上のファイルの非標準的な配置など、特定のデータベースに復元する場合に役立ちます。 [T-SQLの表示]ボタンを使用すると、回復のために起動される生成されたT-SQLスクリプトを表示できます。









2.設定されたスケジュールに従って自動的に。 たとえば、テストSQL Serverのバックアップチェーンを定期的に確認する場合、またはデータベースを更新する場合。 これらの目的のために、プログラムには特別なタスクがあります。 タスクで指定されたパラメーターは、手動モードの回復フォームで指定されたパラメーターとほぼ同じです。









タスクをスケジュールに従って実行するには、スクリプトに含める必要があります。 たとえば、夜。 詳細な回復ログは、サービスログで表示できます。









おわりに



QMBのXMLリカバリプランのメカニズムは、管理者がキロメートルログでデータを復元するとき、データベースを別のSQL Serverに転送するとき、およびバックアップをチェックするときの生活をずっと楽にする優れた機能です。 このメカニズムは、標準のメンテナンスプランがバックアップに使用される場合でもアクティブにできます。 将来的には、プログラムを使用してこれを行う方法に関する記事を準備する予定です。



すでにQMBを使用していて、この機能を使用しなかった場合、XMLリカバリプランが含まれている可能性があります。 コメントやメールsupport@qmbsql.ruでご質問にお答えします



All Articles