ホーム > インフラ > TFSのバックアップって何やっているの?ちょっと覗いてみよう。

TFSのバックアップって何やっているの?ちょっと覗いてみよう。


なーんか、TFSのフルバックアップが失敗するなーということで調査してみました。

TFSのバックアップには、TFS PowerToolsのバックアップツール(http://msdn.microsoft.com/ja-jp/library/ms253070.aspx)を利用しています。バックアッププランの作成については、りばてぃさんの記事がまとまっています。

TFS Advent Calendar Day 10~TFS 2010のバックアップとリストア~

まずはログの確認

何はともあれログの確認です。バックアップログはここに出力されます。→ C:\ProgramData\Microsoft\Team Foundation\Server Configuration\Logs

ログを確認すると、結構順調にバックアップを行なっているようなんだけれど、BackupSet(バックアップのカタログ?)の更新をしようとして、XMLのカタログファイルを読み込む段階でエラーになっているようです。

[Error  @06:16:49.170] System.InvalidOperationException: XML ドキュメント (302906,36) でエラーが発生しました。 —> System.Xml.XmlException: ‘.’ (16 進数値 0x00) は無効な文字です。 行 302906、位置 36。

   … 略 …

   — 内部例外スタック トレースの終わり —
   場所 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   場所 Microsoft.TeamFoundation.PowerTools.Admin.Helpers.BackupSetSerializer.Load(String path)
   場所 Microsoft.TeamFoundation.PowerTools.Admin.Helpers.BackupSetHelper.AddAndSaveBackupSet(String path, TfsBackupSet backupSet)
   場所 Microsoft.TeamFoundation.PowerTools.Admin.Apply.TakeFullBackup.Run()

TFSのバックアップって何やっているの?

TFSのフルバックアップがやっていることを簡単にまとめると、次の4つになります。

  1. バックアッププラン定義ファイルの読み込み
  2. バックアップセットの作成
  3. バックアップの実行
  4. バックアップカタログの更新

バックアッププラン定義ファイルの読み込み

バックアッププラン定義ファイルは、バックアッププラン作成時にこのあたりに作成されます。→ C:\ProgramData\Microsoft\Team Foundation\Server Configuration\ConfigPT.xml

ConfigPT.xmlには、バックアップ対象のデータベースの一覧やバックアップ頻度、通知メール設定、レポーティングサーバーのバックアップキーファイルの場所など、バックアッププランの設定がすべて記述されています。

バックアップセットの作成

ConfigPT.xmlのTfsConfiguration, TfsCollections, TfsWarehouse, Reporting, Sharepointセクションからバックアップ対象のDatabase情報を取得し、バックアップセットを作成します。

バックアップの実行

Microsoft.SqlServer.Management.Smo.Backupクラスを利用して、ConfigPTから読み込んだDatabaseを順次バックアップしていきます。

バックアップカタログの更新

レストア時に参照するバックアップカタログを更新します。バックアップカタログはこのあたりに作成されます。→ バックアップフォルダー\BackupSets.xml

結局なんで落ちたの?

どうも、BackupSets.xmlがぶっ壊れていたようです。BackupSets.xmlを覗いたら、確かにこんな感じでXMLがぶっ壊れていました。

<TfsBackupSet Id="20120127033004" Time="2012/01/27 03:30:04">
  <Databases>
    <BackupSetDatabase Name="StateService_a02fc1fdb80b4052b21b6f5b74932695" File="" Parent="" />

    … 略 …

    <BackupSetDatabase Name="WSS_Search_SVTFS" File="" Parent="" />
    <BackupSetDatabase Name="Se

XMLを無理やり意味のある形に修正するか、壊れちゃったものは仕方ないとBackupSets.xmlを思い切って削除(!!)してもう一度フルバックアップをしてみましょう。もちろんBackupSets.xmlを削除すると、データベースのバックアップがあったとしてもTFSのバックアップシステムからレストアすることはできないので注意してください。

どうしたら良いかな?

Webで検索するとカタログファイルがぶっ壊れてしまったためにバックアップが失敗したり、レストアが出来なかったりと言った事例が見て取れます。ちょっと残念なんですが、カタログファイルは別途バックアップしておいたほうがいいかもしれません。

あともう一つ、ReportingServerのキーファイルはバックアッププラン作成時に作成されます。もしバックアップファイルを直に消すことがあっても、この子は消さないように注意しましょう。まぁ別途キーファイルを出力してあげればいいんですけれどね。

ふぅ、焦った。

広告
カテゴリー:インフラ タグ:
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。