VSS を使用して SharePoint で検索サービス アプリケーションをバックアップおよび復元する

ボリューム シャドウ コピー サービス (VSS) を使用して、SharePoint で検索サービス アプリケーションのバックアップと復元を行う方法について説明します。

ボリューム シャドウ コピー サービスを使用して SharePoint のバックアップと復元を行うための前提条件

SharePoint のバックアップおよび復元ソリューションをプログラミングするには、VSS の機能と SharePoint と VSS のインターフェイスについて理解する必要があります。

表 1. ボリューム シャドウ コピー サービスを使用して SharePoint のバックアップと復元を行うための中心概念

記事 説明
ボリューム シャドウ コピー サービスとその下位の記事。 VSS とそのプログラミング方法について説明します。
Windows SharePoint Services およびボリューム シャドウ コピー サービスとその下位の記事。 VSS と SharePoint の VSS とのインターフェイスを使用した SharePoint データのバックアップと復元に関する、概要およびステップバイステップの手順。

ボリューム シャドウ コピー サービスを使用した検索サービス アプリケーションのバックアップと復元

次の手順は、VSS を使用するバックアップ/復元アプリケーションを作成する開発者を対象としています。 SharePoint 検索サービス アプリケーションをバックアップまたは復元する方法の手順を探している IT プロフェッショナルの場合は、「SharePoint の バックアップと復元」を参照してください。

前提条件:Microsoft Windows SDK for Windows 7 と .NET Framework 4 をダウンロードして、検索サービス アプリケーション (SSA) を使用するサーバーと検索インデックス コンポーネントを使用する各サーバーにインストールします。 特に vshadow.exe と betest.exe を C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Bin\\x64\\vsstools にインストールします。

ヒント:この記事で説明するWindows PowerShell コマンドレットの詳細については、「sharePoint リファレンスのWindows PowerShell」を参照してください

SharePoint VSS Writer を登録し、サーバーのバックアップと復元を準備するには

  • 次のいずれかの方法で SharePoint VSS Writer を登録します。

    • [ 管理ツール] で [ サービス] を開き、 SharePoint VSS Writer サービスを開始します。

    • コマンド コンソールを開き、 を実行 stsadm.exe -o registerwsswriterします。 stsadm ユーティリティは、%ProgramFiles%\Common Files\Microsoft Shared\web サーバー拡張機能\15\BIN にあります。 [管理ツール] の [サービス] でサービスが実行されていることを確認します。

VSS を使用して SharePoint 検索サービス アプリケーションをバックアップするには

  1. VSS メタデータをvshadow.exe -wm > writers.txt取得するには、インデックス コンポーネントを含む各サーバー上のコマンド ラインと、検索データベースが配置されているSQL Serverを実行しているコンピューターでを実行します。 作成されるwriters.txt ファイルには、サーバーに関連付けられているすべての VSS ライターが一覧表示されます。 次の手順でこのファイルを使用して、検索サービス アプリケーション (SSA) と検索インデックスのマニフェスト ファイルを生成します。

  2. 次の手順に従い、検索データベースがある SQL Server を実行するコンピューターで、SSA のマニフェストを作成します。

  3. XML ファイルを作成し、そのファイルに以下をコピーします。

    <BETest>
      <Writer writerid="SharePoint Services Writer ID">
        <Component logicalPath="PathSSA" componentName="SearchAppOffice" />
        <Component logicalPath="PathC" componentName="SearchAppOffice_CrawlStore" />
        <Component logicalPath="PathA" componentName="SearchAppOffice_AnalyticsReportingStore" />
        <Component logicalPath="PathL" componentName="SearchAppOffice_LinksStore" />
      </Writer>
      <Writer writerid="SQL Server Writer ID">
        <Component logicalPath="PathDbSSA" componentName="SearchAppOffice" />
        <Component logicalPath="PathDbC" componentName="SearchAppOffice_CrawlStore" />
        <Component logicalPath="PathDbA" componentName="SearchAppOffice_AnalyticsReportingStore" />
        <Component logicalPath="PathDbL" componentName="SearchAppOffice_LinksStore" />
      </Writer>
    </BETest>
    
  4. このファイルの 10 個のプレースホルダーは、最初の手順で生成した writer.txt の適切な値で置き換えます。 次の表をガイドとして使用してください。

    注:

    右側の列では、 SSA 自体が Search Service アプリケーションの名前のプレースホルダーです。

    表 2. writers.txt の SSA マニフェスト ファイルのプレースホルダーと値

    Placeholder writers.txt 内の記載場所
    SharePoint Services Writer ID "SharePoint Services Writer" エントリの下にある WriterId GUID
    PathSSA "SharePoint Services Writer" エントリの検索サービス アプリケーション名と共に表示される論理パス エントリ
    PathC "SharePoint Services Writer" エントリの " _SSA__CrawlStore" という名前のコンポーネントについて表示される論理パス エントリ
    PathA "SharePoint Services Writer" エントリの " SSA _AnalyticsReportingStore" という名前のコンポーネントについて表示される論理パス エントリ
    PathL "SharePoint Services Writer" エントリの " _SSA__LinksStore" という名前のコンポーネントについて表示される論理パス エントリ
    SQL Server Writer ID "SqlServerWriter" エントリ以下に表示される WriterId GUID
    PathDbSSA "SqlServerWriter" エントリで、検索サービス アプリケーション名のコンポーネントについて表示される論理パス エントリ
    PathDbC "SqlServerWriter" エントリの " _SSA__CrawlStore" という名前のコンポーネントについて表示される論理パス エントリ
    PathDbA "SqlServerWriter" エントリの " _SSA__AnalyticsReportingStore" という名前のコンポーネントについて表示される論理パス エントリ
    PathDbL "SqlServerWriter" エントリの " _SSA__LinksStore" という名前のコンポーネントについて表示される論理パス エントリ

    これは、SSA マニフェスト ファイルです。 完成した SSA マニフェスト ファイルの例については、マニフェスト ファイルの例を参照してください。

  5. 次の手順に従い、検索インデックス ファイルのマニフェストを作成します。 インデックス コンポーネントがある各サーバーでこの手順を繰り返してください。

  6. XML ファイルを作成し、そのファイルに以下をコピーします。

    <BETest>
      <Writer writerid="SharePoint Services Writer ID">
          <Component logicalPath="PathIndex" componentName="NameIndex" />
      </Writer>
      <Writer writerid="OSearch15 Writer ID">
          <Component logicalPath="PathOSearch15" componentName="IndexComponentGroup" />
      </Writer>    
    </BETest>
    
  7. このファイルの 6 個のプレースホルダーは、最初の手順で生成した writer.txt の適切な値で置き換えます。 次の表をガイドとして使用してください。

    表 3. writer.txt の検索インデックス マニフェスト ファイルのプレースホルダーと値

    Placeholder writers.txt の記載場所
    SharePoint Services Writer ID
    "SharePoint Services Writer" エントリの下にある WriterId GUID
    PathIndex
    "SharePoint Services Writer" エントリの "IndexComponentGroup" から始まる名前のコンポーネントについて表示される論理パス エントリ
    NameIndex
    "SharePoint Services Writer" エントリの "IndexComponentGroup" から始まる名前のコンポーネントについて表示される名前エントリ
    OSearch15 Writer ID
    "OSearch15 VSS Writer" エントリの下にある WriterId GUID
    PathOSearch15
    "OSearch15 VSS Writer" エントリの "IndexComponentGroup" から始まる名前のコンポーネントについて表示される論理パス エントリ。 通常は空です。
    IndexComponentGroup
    "OSearch15 VSS Writer" エントリの "IndexComponentGroup" から始まる名前のコンポーネントについて表示される名前エントリ

    これは検索インデックス マニフェスト ファイルです。 完成した検索インデックス マニフェスト ファイルの例については、マニフェスト ファイルの例を参照してください。

  8. (省略可能) インデックス コンポーネントが格納されている各サーバーで、 IndexComponent フォルダーのサイズをメモします。 この情報は、後でバックアップを確認するときに利用できます。

  9. ファーム内の任意のサーバーで SharePoint 管理シェルを開き、次の行を実行します。 検索サービス アプリケーションの名前 は、バックアップする SSA です。 後で SharePoint 管理シェル ウィンドウを開いたままにします。

    $ssa = Get-SpenterpriseSearchServiceApplication -Identity "name of search service application"
    Suspend-SPEnterpriseSearchServiceApplication -Identity $ssa
    
  10. 次の手順で、SSA データベースとインデックスのバックアップを実行します。

  11. SSA データベースを持つサーバーで、コマンド ラインで次のコマンドを実行 します。ここで、コピー先バックアップ フォルダー はバックアップ ファイルのフォルダーの完全パス、 バックアップ ログ ファイルはバックアップ ログ ファイル の完全パスと名前、 SSA マニフェスト ファイルは SSA マニフェスト ファイル のパスとファイル名です。

    betest.exe /v /b /d "destination backup folder" /s "backup log file" /x "SSA manifest file"
    
  12. [SharePoint 管理シェル] ウィンドウが開いているサーバーで、次の行を実行します。 ここで、トポロジ ファイル名 は、トポロジ情報を含むエクスポートされたファイルの完全なパスと名前です。 このファイルは、SSA の復元手順で使用します。

    Export-SPEnterpriseSearchTopology -SearchApplication $ssa -Filename "topology file name"
    
  13. ファイルが作成されたことを確認します。

  14. インデックス コンポーネントを持つ各サーバーで、コマンド ラインで次を実行 します。ここで、コピー先のバックアップ フォルダー はバックアップ ファイルのフォルダーの完全パス、 バックアップ ログ ファイルはバックアップ ログ ファイル の完全パスと名前、 インデックス マニフェスト ファイル はインデックス マニフェストのパスとファイル名です。

    betest.exe /v /b /d "destination backup folder" /s "backup log file" /x "index manifest file"
    
  15. (省略可能) バックアップされたインデックス フォルダーを確認します。 フォルダー名とサイズが、前の手順でメモした情報と一致することを確認します。

VSS を使用して SharePoint 検索サービス アプリケーションを復元するには

  1. ファーム内の任意のサーバーで SharePoint 管理シェルを開き、次の行を実行して、既存の検索サービス アプリケーションとそのプロキシを削除します。 検索サービス アプリケーションの名前 は復元する SSA、 プロキシの名前 はアプリケーション プロキシです。 SSA プロキシの名前は、通常、末尾に "Proxy" という単語が追加された SSA の名前と同じであることに注意してください。 スイッチを RemoveData 使用すると、検索データベースが確実に削除されます。

    $ssa = Get-SPEnterpriseSearchServiceApplication -Identity "name of search service application"
    Remove-SPEnterpriseSearchServiceApplication -Identity $ssa -RemoveData
    Remove-SPEnterpriseSearchServiceApplicationProxy -Identity "name of SSA proxy"
    
  2. 同じサーバーで、コマンド ラインで次を実行して SSA データベースを復元します。ここで、 バックアップ 先のバックアップ フォルダー はバックアップ ファイルのフォルダーの完全パス、 バックアップ ログ ファイルはバックアップ ログ ファイル の完全なパスと名前、 SSA マニフェスト ファイルは SSA マニフェスト ファイルのパスとファイル名です。

    betest.exe /v /r /d "destination backup folder" /s "backup log file" /x SSA_manifest_file
    
  3. 同じサーバーで SharePoint 管理シェルを開き、次の行を実行して SSA を復元します。ここで、 アプリケーション プール名 は新しいプールの名前、 domain\user はアプリケーション プールがログインするユーザーのドメイン 名、検索サービス アプリケーションの名前 は SSA の名前です。 topology_file_name は、SSA がバックアップされたときに作成した類型ファイルのパスと名前です。

    ヒント

    このコードで、復元された SSA を実行するための新しいアプリケーション プール ID が作成されますが、Get-SPServiceApplicationPool コマンドレットを実行して既存のアカウントを使用することもできます。

    $applicationPool = New-SPServiceApplicationPool -name "application pool name" -account "domain\\user"
    Restore-SPEnterpriseSearchServiceApplication -Name "name of the search service application" -ApplicationPool $applicationPool -TopologyFile "topology_file_name" -KeepId
    
  4. 次のコマンドレットを使用して、SSA 用のプロキシを作成します。 手順 1 で使用したのと同じ値を検索サービス アプリケーションの名前と SSA プロキシの名前に使用することをお勧めします。

    $ssa = Get-SpenterpriseSearchServiceApplication -Identity "name of search service application"
    New-SPEnterpriseSearchServiceApplicationProxy -Name "name of SSA proxy" -SearchApplication $ssa
    
  5. (省略可能) [ サーバーの全体管理] を開いて、SSA とそのプロキシが存在することを確認します。 [ サービス アプリケーションの管理] を選択して、SSA とそのプロキシが表示されることを確認します。

  6. (省略可能) サービス一覧の SSA をクリックし、開いたページで、[ 検索アプリケーションのトポロジ] の表が、バックアップ手順でエクスポートしたトポロジと一致することを確認します。 (また、コマンドレット Get-SPEnterpriseSearchStatus を使用してトポロジを確認することもできます)。

  7. インデックス コンポーネントがあるすべてのサーバー で、次の手順を実行してインデックス ファイルを復元します。

  8. 管理ツール >サービスでホスト コントローラー サービスを停止するか、SharePoint 管理シェルで次のコマンドレットを実行します。

    stop-service SPSearchHostController
    
  9. 同じサーバーで、コマンド ラインで次を実行します。 ここで、インデックス マニフェスト ファイル は、バックアップ 手順で作成したインデックス マニフェストのパスとファイル名です。

    betest.exe /v /r /d "destination backup folder" /s "backup log file" /x "index manifest file"
    
  10. (省略可能) フォルダー名とサイズが、バックアップ手順でメモしたものと一致することを確認します。

  11. 各インデックス コンポーネントに対して次の手順を実行し、データ フォルダー以下のデータの名前を変更します。

  12. SharePoint 管理シェルで、次のコマンドレットを実行します。

    Get-SPEnterpriseSearchVssDataPath
    
  13. コマンドレットの出力から、各 GUID の最後の部分をメモします。 たとえば、出力の 1 行が である場合は IndexComponentGroup_e255918b-6ab0-4d7c-8049-720b2744c62f、レコード 720b2744c62f を記録します。

  14. エクスプローラー (または Windows Server 2008 の Windows エクスプローラー) で、 にC:\\Program Files\\Microsoft Office Servers\\15.0\\Data\\Office Server\\Applications\\Search\\Nodes\\24488A\\IndexComponentN\\storage\\data移動します。N はインデックス コンポーネントの数です。

  15. これらの各フォルダーには、先頭に "SP" が付き、12 桁の 16 進数とバージョン番号が続く名前のサブフォルダーがあります。 12 桁の 16 進数が前の手順でメモした GUID の末尾と一致する各サブフォルダーについて、サブフォルダーの名前を importindex に変更します。 次の例では、サブフォルダー SP720b2744c62f.1.I.1.0 の名前を toimportindex にします。

  16. 管理ツール >サービスでホスト コントローラー サービスを再起動するか、SharePoint 管理シェルで次のコマンドレットを実行します。

    start-service SPSearchHostController
    
  17. インデックス データ フォルダー名が以前の名前に戻っていることを確認します。 (以降の例では、これは "'SP720b2744c62f.1.I.1.0" になります)。

  18. (省略可能) IndexComponent フォルダーのサイズが、バックアップ手順でメモしたサイズと一致することを確認します。

  19. SSA を再起動します。

  20. 影響を受けるすべてのサーバーで、SharePoint 管理シェルの次のコマンドレットを実行し、検索アプリケーション サービスが正しく実行されていることを確認します。

    Get-SPEnterpriseSearchStatus
    
  21. 新しいドキュメントのフィード処理と検索処理が機能していることを確認します。 たとえば、クエリ "size=0" を使用してインデックスのサイズ>を確認します。 また、新しいドキュメントを追加して、検索できることを確認します。

マニフェスト ファイルの例

SSA マニフェスト ファイル

<BETest>
  <Writer writerid="da452614-4858-5e53-a512-38aab25c61ad">
    <Component logicalPath="3bca1050-c15a-4987-93dc-8f911d35a0ba\\2e1f9435-d714-4bcb-be8d-ae1214e2ea22" componentName="SearchAppOffice" />
    <Component logicalPath="3bca1050-c15a-4987-93dc-8f911d35a0ba\\b8bb09b8-a823-43b0-a131-7bd5464f91fb" componentName="SearchAppOffice_CrawlStore" />
    <Component logicalPath="3bca1050-c15a-4987-93dc-8f911d35a0ba\\20c0c0b5-2086-4b16-8ce8-2cecb5186ebe" componentName="SearchAppOffice_AnalyticsReportingStore" />
    <Component logicalPath="3bca1050-c15a-4987-93dc-8f911d35a0ba\\15004c47-21ca-441e-80fe-9e068ef4ad14" componentName="SearchAppOffice_LinksStore" />
  </Writer>
  <Writer writerid="a65faa63-5ea8-4ebc-9dbd-a0c4db26912a">
    <Component logicalPath="DDDVSS4\\SQLEXPRESS" componentName="SearchAppOffice" />
    <Component logicalPath="DDDVSS4\\SQLEXPRESS" componentName="SearchAppOffice_CrawlStore" />
    <Component logicalPath="DDDVSS4\\SQLEXPRESS" componentName="SearchAppOffice_AnalyticsReportingStore" />
    <Component logicalPath="DDDVSS4\\SQLEXPRESS" componentName="SearchAppOffice_LinksStore" />
  </Writer>
</BETest>

インデックス マニフェスト ファイル

<BETest>
  <Writer writerid="da452614-4858-5e53-a512-38aab25c61ad">
    <Component logicalPath="3bca1050-c15a-4987-93dc-8f911d35a0ba\\cfbddb07-2409-4b3d-997b-ee1b936c3dbd" componentName="IndexComponentGroup_3bca1050-c15a-4987-93dc-8f911d35a0ba" />
  </Writer>
  <Writer writerid="0ff1ce15-0201-0000-0000-000000000000">
    <Component logicalPath="" componentName="IndexComponentGroup_3bca1050-c15a-4987-93dc-8f911d35a0ba" />
  </Writer>
</BETest>

関連項目