一步一步教你備份和恢復你的TFS服務器(組圖)
備份和恢復一個TFS(Team Foundation Server)服務器常常令人心生畏懼。因為這會涉及到很多服務和步驟。TFS(Team Foundation Server)2010一發布,我就知道我們必須要做些什么來改進這個過程,同時,我們也開始討論如何簡化這個過程。我們關注的主要客戶是小型的團隊,它們既沒有數據中心運營團隊,也沒有知道如何導入和導出SQL備份的DBA(Database administrator)。
幾個月以前,我們計劃構建一個全新的Power Tool,這個工具將會極大地簡化備份和恢復一個TFS(Team Foundation Server)服務器的過程。我很自豪地宣布,我們已經實現了這個Power Tool,它會包含在Power Tools的下一個版本中(現在,還沒有確定具體日期,但是應該就在接下來的幾個月內發布)。
在我們當前發布的備份指南中,最令人沮喪的事情是:你每次在服務器中添加一個新的項目集合的時候,你都必須要在這個新的數據庫中安裝一些新的存儲過程,以確保它可以獲得和其它所有的數據庫一致的快照。據我所知,大多數人都會忘記做這件事情。雖然,這并不意味著世界末日,但是,如果你忘記做這件事情,它就無法給你提供最無縫的恢復體驗。這個新工具最酷的一個特性是:你每次進行備份的時候,它都可以自動地掃描所有的項目集合,同時,它會確保安裝了所有合適的快照,當你建立一個新的集合的時候,沒有任何附加的備份工作需要你來完成。這個新集合會被自動地配置,然后添加到你現有的備份計劃中。
你的部署越復雜,你的備份就越復雜。在這個討論中,我將會把關注點放在TFS的初級用戶上,因為這方面的簡化是***的,但是,這個Power Tool實際上可以幫助所有用戶簡化備份和恢復的過程。
當我們開始構建這個Power Tool的時候,我們決定要利用全新的2010管理控制臺的一個未公開的特性:可擴展性。實際上,這個管理控制臺是支持插件的,但是我們沒有在文檔中公開這些接口,因為我們還沒有對它們進行足夠的測試。這是***次真正地對它們進行測試,我希望在將來我們可以把這些接口公開給第三方的插件。讓我帶你領略一下全新的備份體驗,同時,我會告訴你這個工具可以做些什么。
配置一個備份計劃
在你的TFS(Team Foundation Server)2010服務器上安裝新版本的Power Tools以后(是的,這個工具只支持TFS(Team Foundation Server)2010),你會注意到在管理控制臺中有一個新標簽,叫做“Team Foundation Backups”。當你點擊這個標簽的時候,你會看到這樣一個界面,通過這個界面,你可以配置你的TFS(Team Foundation Server)備份計劃。
如果你點擊“Create Backup Plan”,會啟動一個向導,來引導你完成整個過程。這是這個向導的welcome頁面:
點擊“Next”,它會導航到***個頁面,在這個頁面中你可以輸入備份的路徑和你希望保存備份的天數(超過這個天數以后,它會自動地刪除備份)。當然,如果你希望自己手動刪除備份,也可以很容易地做到——它們只是特定目錄下的一些文件而已。
再次點擊“Next”,你可以提供自動執行備份的賬戶,同時,你可以看到這個賬戶需要什么SQL權限。正如你將會看到的那樣,以后的備份并不是一定要被自動化,但是他們可以被自動化。
再次點擊“Next”,你現在可以進行一些配置,讓備份服務把備份過程中的故障email給你。在這個例子中,我沒有給我的TFS(Team Foundation Server)服務器配置SMTP主機,所以我唯一的選擇是“No Email Alerts”。 這里你可以使用和其他TFS(Team Foundation Server)通知一樣的email主機和地址,也可以指定唯一的收件人。如果你想指定多個收件人,你可以用逗號把這些收件人的email地址隔開。
再次點擊“Next”,你現在可以配置時間表了。默認是每天晚上對你的TFS(Team Foundation Server)進行完整的備份。對于小型的TFS(Team Foundation Server)來說,這已經足夠了。選擇這個選項意味著將會在每天凌晨2點進行完整的備份。如果你想進行更多的控制,你可以點擊“Advanced Schedules Options”。
如果你選擇了“Advanced Schedules”,那么你會得到兩個選項:1) Full, Differential and Transactional Schedule和2) Manual Backup Only。如果你選擇了“Manual Backup Only”,它不會自動地執行任何的備份,只有當你運行管理控制臺,點擊“Take Full Backup Now”按鈕的時候才會執行一次備份(稍后會詳細說明這部分內容)。這里我選擇“Full, Differential and Transactional Schedule”——這是一個十分具有代表性的企業備份策略。我把它設置成每個星期天的凌晨2點做一次完整的備份,每周的周一到周六的凌晨2點做一次差異備份(有時也稱作增量備份),每15分鐘做一次事務性的備份。這意味著我不會丟失15分鐘以上的數據,這種策略的性能和存儲開銷并不大。SQL備份功能的這些特性真的很酷。
我已經配置好了時間表,點擊“Next”,讓我檢查一下我的設置。
再次點擊“Next”將會驗證我提供的這些設置的有效性。你總不會希望等到第二天凌晨2點才發現你錯誤地輸入了一些東西吧:)在這個例子中我收到了一個警告,因為我已經有了一個配置好的備份計劃,而我正在重寫它。這個工具規定一個TFS(Team Foundation Server)服務器只能擁有一個備份時間表。
點擊“Configure”,將會為了備份而重新配置你的TFS(Team Foundation Server)服務器,這會對你的TFS(Team Foundation Server)服務器做出一些改動。
再次點擊“Next”,現在你已經完成了所有的配置工作!對于備份來說,你的服務器已經完全配置好了(可以和文檔比較一下:))。
進行一次備份
當然,如果你已經建立了一個時間表,那么備份會在指定的時間自動地進行,但是我真的無法給你展示一張很酷的截圖——那是不可見的:)。無論你是否建立了一個時間表。你都可以在任意時間執行一次完整的備份。如果備份計劃已經配置好了,Team Foundation Backups窗格看起來應該是這樣的。它會顯示你的很多設置,并且會提供一個管理操作的列表(在右邊)。
如果你點擊“Take Full Backup Now”,它會執行一次備份,然后把備份文件放在計劃中指定的文件系統目錄中。就是這樣,就這么簡單!
恢復一個備份
恢復一個備份需要一點技巧,它主要取決于你要做什么。我們支持兩種基本的場景:
1)恢復一個或多個團隊項目集合(而不是真個服務器)。如果一個團隊把他們的數據庫搞亂了,他們想恢復它,但是所有使用這個服務器的其他團隊又不想被打斷,那么,你可以進行這樣的操作。
2)恢復整個Team Foundation Server的數據(也許你保存數據的驅動器損壞了)。
這兩個過程幾乎是一樣的,但是我會指出幾個主要的區別。這些步驟只是示意性的,要深入了解如何進行配置,你可以參考Power Tools提供的文檔。
你必須要做的***件事情是讓這個服務器為恢復做好準備。
如果你要恢復整個服務器,你應該使用命令提示符,然后在TFS(Team Foundation Server) 2010的Tools目錄中運行“tfsservicecontrol quiesce”。這會關閉所有的TFS(Team Foundation Server)服務,同時,這會釋放所有的數據庫鎖。
如果你只是要恢復一些特定的集合,這個工具會提示你,來獲取你要在脫機狀態下恢復哪些集合,然后自動地拷貝那個用于替換的集合。
這個工具很保守。它不會重寫任何數據。所以,除了恢復一些特定的集合的情況之外,如果你要恢復一個現有的數據庫的備份,你必須首先刪除這個數據庫。你可以使用SQL Server Management Studio或SQL Server Management Studio Express來完成這個任務,這是很容易做到的。我更喜歡先Detach一些數據庫,然后再移除它們,但是你也可以直接刪除這些數據庫。所有這些都可以通過在SQL Server Management Studio中右擊上下文菜單來完成。
現在你已經為恢復做好準備了。在TFS(Team Foundation Server)的管理控制臺中,在“Team Foundation Backups”標簽下,你點擊“Restore Databases”。這會啟動一個向導,來引導你完成這個過程。
在歡迎屏上點擊“Next”以后,你可以瀏覽備份的列表,然后選擇一個想要恢復的備份集(通過這個備份的日期和時間)。
點擊“Next”以后,你需要在你希望恢復的這個備份集中選擇一些數據庫和對應的SQL實例。如果一個數據庫的“SQL Server”域是空白的,那么這意味著不能恢復這個數據庫。在這個例子中,我要恢復同一個SQL實例中的所有數據庫,但是,如果這是一個多實例的SQL Server,我可以選擇把它們恢復到不同的SQL實例中,來擴展TFS(Team Foundation Server)服務器。
再次點擊“Next”,你可以檢查你剛才做出的一些選擇。
點擊“Next”或“Verify”可以確保這個恢復是有效的。
點擊“Restore”將會恢復這些SQL數據庫。
***,再次點擊“Next”會顯示一個“成功屏”:)它還包括一個“informational warning”,你很可能要在應用程序層上刪除這個緩存,因為你不想和剛剛恢復那個數據庫產生不一致。
如果你運行了“tfsservicecontrol quiesce”,你必須要做的***一件事情是運行“tfsservicecontrol unquiesce”,讓TFS(Team Foundation Server)服務器重新上線。
總結
就是這樣!就這么簡單!如果你以前做過TFS(Team Foundation Server)服務器的備份/恢復,你一定會承認這種方法是更加容易的。我的討論并沒有涵蓋所有說明(那是文檔應該做的工作),也沒有涵蓋所有的備份策略,如果你還沒有測試過它,不能只依靠這篇文章。無論你做了什么工作——你都要確保你可以備份和成功恢復所有數據,請,請,請不要在偶然地修改格式或刪除你還沒有備份的數據的過程中讓你的系統遭到破壞。在一個帶有真實數據的生產性的系統上測試它以前,你可以首先在一個仿真的系統上,或者在一個“預生產”的系統上測試它。
對于這個全新的Power Tool,我真的激動萬分。讓管理一個TFS(Team Foundation Server)服務器盡可能地容易,這是下一個步驟。就像我說的那樣,在下一個版本的Power Tools中,它會和其他炫酷的工具一起發布。只要它一發布,我就會告訴大家的。像過去一樣,歡迎大家提供反饋。