はじめに
これは何も考えていない開発者がTFSサーバーの移設時に失敗した話です。
悪い例として、こんなことを起こさないよう、ちゃんと調べてから移設作業を行いましょう。
また、正しい方法ではない場合がありますので、参考程度にご覧ください。
移設が必要となった経緯
TFSはソース管理やビルドに使用しています。
TFSとは。。。以下のサイトを参照ください。
https://www.microsoft.com/ja-jp/dev/products/team-foundation-server.aspx
この子かなり便利で意外と何でもできちゃうんです。
何ができるかというと、、、優しいグーグル先生が教えてくれます。
で、今までは社内にサーバー機を準備して使用していました。
物理なので、いろいろとリスクが多いです。
一例をあげるとこんな感じ。
- HDDが壊れたりしたら?
- 急な停電がきたら?
- 停電時にUPSが正しく起動しなかったら?
他にもたくさんあると思います。
もちろん、回避策もあります。
この問題を解決するためにいろいろ検討しサーバーをクラウドに移設しよう(検討内容は省略)となりました。
失敗① バックアップ手順
DBのバックアップを毎日取っていました。
バックアップの方法はSQLserverのカタログを直接バックアップを取ってました。
TFSといってもDBをソフトで開いてるだけ。
DBのバックアップを取ってクラウドに転送・展開しTFSから接続したら行ける!
と安直に考え実施。
DB展開完了し開こうとしました。TFSがプロジェクトを見つけることができず開くことができませんでした。
残念!!
この時点で今まで取っていたバックアップに意味がない。ということが発覚。
(今まで障害が発生してなくてよかった。。。本当に。。。)
失敗①の解決策
教えてグーグル先生!ってことで調べたら以下の回答が来ました。
①TFSでプロジェクトを停止。停止後にデタッチ。
②デタッチ後にSQLserverでバックアップ。
③バックアップファイルを転送。
④転送されたファイルを展開。
⑤TFSからアタッチ
ちゃんと調べて行いましょう。。。
失敗② TFSのバージョン
せっかく移設するのなら、新しいバージョンを使用したい!
ということで2012→2016にしようと思いました。
結果からいうと、だめでした。
バージョンは合わせる必要があります。
バージョンのアップグレードは正しい手順で行いましょう。
失敗②の解決策
解決策は簡単です。
移設前のTFSのバージョンを調べて、同じバージョンのTFSをインストールしましょう。
アップグレードは調べて正しい方法で行いましょう。
今回はアップグレードする必要性がなかったので、同じバージョンをインストールしました。
そのため、手順についてはわかりません。
とりあえず、参考になりそうなサイトがありましたので、ご参考までに。。。
https://msdn.microsoft.com/ja-jp/library/jj620933(v=vs.120).aspx
失敗③ SQLserverのバージョン
いろいろがありましたが、多くの人の手助けをいただき移設の検証ができるようになりました!
検証は今のプロジェクトが参照できるか?今まで通り使えるか?等、当たり前のことです。
検証では特に問題ありませんでした。
さて、やっときました。本番です!
手順通りデタッチしてバックアップ。転送。SQLserverに展開。。。
→失敗。
あれ?転送中に失敗したかな?
最初からやり直し。
→失敗
検証では成功したのに。。。なんでだろう?
ということ調査。
原因
検証を行っている最中に移設元のTFSにサービスパックを適応してました。
適応したことによって、SQLserverのEnterprise Editionの機能まで使用することになっていました。
移設先のSQLserverのeditionはStandard Edition。
そのため、展開時にeditionが異なるから展開できないよ!と怒られていました。
失敗③の解決策
この解決策も簡単。SQLserverのeditionを合わせる。
まとめ
手順通りにバックアップを取ろう!
ちゃんとバージョンを合わせよう!
SQLserverのバージョンを合わせよう!
何も考えずとりあえずやってみた!
という。。。悪い例ですね。
移設時はちゃんと調べて行いましょう。
最後には移行でき、問題なく稼働できました。
その後一度だけサーバーに障害が発生しましたが、イメージごとバックアップを取っていたため、被害は最小限で復旧することができました。
※参考したサイト
https://gyorgybalassy.wordpress.com/2014/04/07/migrating-a-tfs-project-collection-to-another-server/