Team Foundation Server (TFS) 2010 のオンラインバックアップを構成する。(Power Tools)

TFS2010には、標準でバックアップツールが付属していません。そのため、手動で行うか TFS PowerTools を使ってバックアップ計画を構成する必要があります。


まず、TFSのバックアップ手法について説明しているマイクロソフトのドキュメントが以下となっています。


Team Foundation Server のバックアップ
http://msdn.microsoft.com/ja-jp/library/ms253070(v=vs.100).aspx


ドキュメントを要約すると・・

  • TFSは複数のデータベースで構成されている
  • バックアップは、すべてのバックアップを対象とし同時に取得する必要がある
  • 個別でバックアップすると整合性が取れなくなる


ちょっと手動でしてみようとか、自動化したスクリプトを書きたいとは思えないほどの複雑な手順となっています。TFSはインストールもそうですが、もう少し構成が簡単になると導入しやすいのにな。惜しいな。と思います。


TFSのデータはSQLServerに格納されているので、手動でバックアップする場合はドキュメントに書かれているような難しい事を考えずに、SQL Serverのサービスを停止してデータベースが入っているフォルダをまるごとコピーするのがおすすめです。私も最初はそうしていました。


ドキュメントの内容はオンラインのバックアップ手法ですね。


こうした面倒な手順を自動化して、バックアップ計画を構成してくれるツールがあるので今回はそれを使います。

Team Foundation Server Power Tools December 2011
http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f



インストールが済むとTFS管理コンソールに「Team Foundation Backups」の項目が追加されます。この画面からバックアップ計画を作成します。ここで作成されるのはあくまで計画で、バックアップは実行されません。


計画が作成されると、タスクスケジューラに夜間バックアップのタスクが登録されます。バックアップの実行はタスクスケジューラのタスクが基本となっているので、計画作成後の実行は管理コンソールやタスクスケジューラから実行することが出来ます。


バックアップを作る際に注意点が3つあります。

  • バックアップ先のフォルダはネットワークフォルダである必要があります。
    (但し、ローカルマシンに共有フォルダを作って指定することができます。)
  • TFS管理コンソールで指定するユーザアカウントはタスクスケジューラの実行アカウントです。
    バックアップ先のフォルダにアクセスできる必要があります。
  • バックアップにはSQLServerも関係するため
    SQLServerのサービス実行アカウントがバックアップ先のフォルダにアクセスできる必要があります。


このため、ネットワークフォルダが匿名でのアクセスを許容していないとバックアップに失敗してしまいます。その場合、バックアップ計画を作成する際に以下のメッセージが表示されます。



[ Backup Plan Verifications ] MSSQL Server service is running as LocalSystem.
Please change this account to an account that can be granted permission on the backup path.


私は対応策として、以下の設定を行い。ローカルの別ディスクにバックアップを作成しました。

  • TFSバックアップ用のローカル管理者権限を持ったアカウントを1つ作る
  • SQLServerのサービスアカウントを、作成したアカウントに変更する
  • ローカルマシンにバックアップフォルダを作成して共有を設定する。作成したアカウントにアクセス権を付与する。


このあたりは、皆さんの環境に合わせて実施してください。



SQL Server のサービスアカウントをTFSバックアップ用のアカウントに変更します。(SQL SERVERを動作させるアカウントであるため、ローカルの管理者権限を付与してください)


バックアッププランウィザードが開始されます。


保存するネットワークフォルダと保存日数を指定します。


タスクスケジューラから実行する際のバックアップ実行アカウントを指定します。


バックアップに失敗した際にメールで通知してくれます。TFS管理コンソールのアプリケーション層で通知の設定をしている場合は設定ができるようになります。


バックアップスケジュールを指定します。デフォルトで毎日午前2時にバックアップを取るようスケジューリングされます。


設定内容が表示されます。


最後に設定が適正か、確認してくれます。私の場合は、バックアッププランを作った状態で再作成しているので、警告が出ています。この時、以下のエラーがでたらユーザアカウントの設定を再検討してください。(SQL SERVERの実行アカウント、バックアップフォルダのアクセス権などなど)


[ Backup Plan Verifications ] MSSQL Server service is running as LocalSystem.
Please change this account to an account that can be granted permission on the backup path.