本文將分別呈現 [MSDN] 與 [Power Tools] 兩者運作方式,並探討彼此間作業事項,相信會讓您更了解 TFS 2010 的備份原理~~
人是視覺性的動物,文字是比不上圖文來的便於了解,本文是為了個人備忘使用的,相信能幫助到一些跟我一樣健忘的人~~
本文將分別呈現 [MSDN] 與 [Power Tools] 兩者運作方式,並探討彼此間作業事項,相信會讓您更了解 TFS 2010 的備份原理~~
|
示範環境:TFS 2010 Single Server in Win2008R2+SQL2008R2+TFS2010。
※ 詳細設定內容請至微軟 MSDN 管理 TFS 文件庫 網站了解。
※ 參考資源: My ALM Blog
P.S. 若您想了解更多 TFS 資訊,請參考『Team Foundation Server 指南』。
備份方式有何差異?
※ 下表中列示了兩者之差異。
作業事項 |
MSDN |
Power Tools |
備份路徑 |
磁碟或磁帶 |
網路路徑 |
備份 Reporting Services 加密金鑰 |
Reporting Services 組態管理員 |
Backup Plan Wizard |
標示交易 |
Tbl_TransactionLogMark |
tbl_TfsTransactionLogMark |
標示交易時使用 |
sp_SetTransactionLogMark |
prc_TfsSetTransactionLogMark |
執行標示交易方式 |
sp_SetTransactionLogMarkAll |
TfsConfigPT.exe |
執行標示程序 |
資料庫維護計畫 |
TfsConfigPT.exe |
排程控制方式 |
資料庫維護計畫 (SQL Job) |
工作排程器 (OS Job) |
備份那些資料庫呢?
名稱 |
標示交易? |
用途 |
Tfs_Configuration |
V |
Team Foundation Server 的組態資料庫包含部署的目錄、伺服器名稱和組態資料。 |
Tfs_Warehouse |
V |
倉儲資料庫包含的資料可用來建置 Reporting Services 所使用的倉儲。 |
TFS_CollectionName |
V |
Team 專案集合的資料庫包含該集合中 Team 專案的所有資料。 |
TFS_Analysis |
Team Foundation Server 部署的資料來源和 Cube。 |
|
ReportServer |
V |
Team Foundation Server 部署的報表和報表設定。 |
ReportServerTempDb |
V |
暫時存放執行特定報表時的資訊。 |
WSS_Config |
SharePoint 產品的組態資料庫包含所有網站的清單。 |
|
WSS_Content |
SharePoint 產品的內容資料庫包含 Team 專案入口網站的實際內容。 |
|
WSS_AdminContent |
SharePoint 產品的系統管理資料庫包含使用者、角色和資料庫的安全性資訊。 |
|
VirtualManagerDB |
V |
SCVMM 系統管理員主控台中所檢視的資訊。 |
※ 標示交易欄位 [勾選] 即代表須進行相關對應處理。
安裝 Power Tools
一、下載最新版本 (筆者使用 10.0.40301.0),並可得知本次版本異動項目如下:
■ NEW – Team Foundation Server Backups
■ Updated – Microsoft Team Foundation Server 2010 Best Practices Analyzer
■ Updated – Team Explorer Enhancements
■ Updated – Team Foundation Power Tool (TFPT.EXE)
二、執行安裝檔 (tfpt.msi) --> 按 [執行]
三、按 [Next]
四、選擇 [I accept the terms in the license agreement] --> 按 [Next]
五、選擇 [Custom] --> 按 [Next]
六、檢查您的 [Tfs Backup Plan] 項目是否與下圖相符 --> 按 [Next]
七、按 [Install]
八、安裝過程中,會在這個作業較久的時間,請費心等待~~
九、安裝完成,按 [Finish]
建立一個備份計劃
一、開始 --> 所有程式 --> Microsoft Team Foundation Server 2010 --> Team Foundation 管理主控台 --> TFS2010 --> Team Foundation Backups --> 按右邊視窗中的 [Create Backup Plan]
二、進行 Backup Plan Wizard,按 [下一步]
三、開啟 [檔案總管] --> 將目錄位置移至 [C:\] --> 新增一個目錄夾名稱為 [TFS2010_Backup] --> 按滑鼠右鍵,移至 [共用對象] --> 按 [進階共用]
四、按 [進階共用]
五、按 [權限]
六、新增 [Administrator] 使用者,並賦予 [完全控制] 權限 --> 按 [確定]
七、於下圖中得知,已開啟共用,其路徑為 [\\TFS2010\TFS2010_Backup]
八、設定備份路徑:
回到 Backup Plan Wizard,於 [Network Backup Path] 中填入 [\\TFS2010\TFS2010_Backup] --> 按 [下一步]
九、備份 Reporting Services 加密金鑰:
於 [Encryption Key Password] 與 [Confirm Password] 中填入相同的密碼 --> 按 [下一步]
十、按 [下一步]
十一、 選擇 [Use a user account] --> 於 [Account Name] 中填入 [Administrator] --> 於 [Password] 中填入該帳號之密碼按 --> 按 [下一步]
十二、 選擇 [No email alerts] --> 按 [下一步]
十三、 選擇 [Full, Differential, and Transactional Schedule] --> 按 [下一步]
● Nightly Full Schedule:每天晚上完整備份。
● Full, Differential, and Transactional Schedule:依需求進行完整、差異與交易記錄備份。
● Manual Backup Only:手動完整備份。
十四、 檢視計劃項目,若無問題按 [Verify]
十五、 若與下圖箱符,即代表 [通過整備檢查],請按 [Create Plan]
※ 若您發生了 TF254027 錯誤,請參考『使用 Power Tools 建立備份計劃時發生 TF254027 錯誤』文章。
十六、 建立備份計劃完成,按 [下一步]
十七、 備份計劃精靈作業成功,按 [Close]
十八、 回到 Team Foundation Backups 會看到如下圖的結果
十九、 至 [C:\ TFS2010_Backup] 目錄位置,會看到兩個檔案:
● ConfigPT.xml:建立出來的備份計劃設定檔。
● RSKey_XXX.snk:Reporting Services 加密金鑰。
備份計劃做了些什麼呢?
一、建立資料表來標示相關交易
---------- MDSN ----------
1: Create Table Tbl_TransactionLogMark
2: (
3: logmark int
4: )
5: GO
6:
7: Insert into Tbl_TransactionLogMark (logmark) Values (1)
8: GO
---------- Power Tools ----------
1: if (not exists(select * from sys.tables where name = 'tbl_TfsTransactionLogMark'))
2: begin
3: Create Table tbl_TfsTransactionLogMark
4: (
5: logmark tinyint
6: )
7: Insert into tbl_TfsTransactionLogMark (logmark) Values (1)
8: end
二、建立預存程序,提供標示交易時使用
---------- MDSN ----------
1: Create PROCEDURE sp_SetTransactionLogMark
2: @name nvarchar (128)
3: AS
4: BEGIN TRANSACTION @name WITH MARK
5: UPDATE TFS_Configuration.dbo.Tbl_TransactionLogMark SET logmark = 1
6: COMMIT TRANSACTION
7: GO
---------- Power Tools ----------
1: if ((not exists(select * from sys.procedures where name = 'prc_TfsSetTransactionLogMark')))
2: begin
3: declare @text as varchar(8000)
4: select @text='Create PROCEDURE prc_TfsSetTransactionLogMark
5: @name nvarchar (128)
6: AS
7: BEGIN TRANSACTION @name WITH MARK
8: UPDATE dbo.Tbl_TfsTransactionLogMark SET logmark = 1;
9: COMMIT TRANSACTION
10: GO'
11: execute (@text)
12: end
三、執行標示交易方式
---------- MDSN ----------
※ 將以下預存程序放置於 TFS_Configuration 中
1: CREATE PROCEDURE sp_SetTransactionLogMarkAll
2: @name nvarchar (128)
3: AS
4: BEGIN TRANSACTION
5: EXEC [ServerName].TFS_Configuration.dbo.sp_SetTransactionLogMark @name
6: EXEC [ServerName].ReportServer.dbo.sp_SetTransactionLogMark @name
7: EXEC [ServerName].ReportServerTempDB.dbo.sp_SetTransactionLogMark @name
8: EXEC [ServerName].TFS_CollectionName1.dbo.sp_SetTransactionLogMark @name
9: EXEC [ServerName].TFS_CollectionName2.dbo.sp_SetTransactionLogMark @name
10: EXEC [ServerName].TFS_CollectionName3.dbo.sp_SetTransactionLogMark @name
11: EXEC [ServerName].TFS_CollectionName4.dbo.sp_SetTransactionLogMark @name
12: EXEC [ServerName].TFS_Warehouse.dbo.sp_SetTransactionLogMark @name
13: EXEC [ServerName].VirtualManagerDB.dbo.sp_SetTransactionLogMark @name
14: COMMIT TRANSACTION
15: GO
---------- Power Tools ----------
運行 TfsConfigPT.exe 執行檔時,會依 ConfigPT.xml 設定檔進行處理
※ TfsConfigPT.exe 檔案位置:
C:\Program Files (x86)\Microsoft Team Foundation Server 2010 Power Tools\Team Foundation Server Backup Plan
四、執行標示程序
---------- MDSN ----------
[資料庫維護計畫] 運行時,會至 TFS_Configuration 中執行以下語法:
EXEC sp_SetTransactionLogMarkAll 'TFSMark'
---------- Power Tools ----------
運行 TfsConfigPT.exe 執行檔時,會執行以下語法:
1: begin
2: declare @text as varchar(8000)
3: select @text='exec prc_TfsSetTransactionLogMark TfsMarkTfpt'
4: execute (@text)
5: end
五、排程控制方式
---------- MDSN ----------
於 [資料庫維護計畫] 中進行控制:
完整備份的計畫命名為 TfsFullDataBackup。
差異備份的計畫命名為 TfsDifferentialBackup。
交易記錄備份的計畫命名為 TfsTransactionLogBackup。
---------- Power Tools ----------
於 [工作排程器] 中進行控制
手動觸發備份
若您有特殊需求,Power Tools 亦提供了可手動觸發備份方式,以下為 Power Tools 備份時所下達的 SQL 語法:
P.S. 不同的環境,將會對應不同的設定,下表為本文的設定。
備份項目 |
語法 |
Database |
BACKUP DATABASE [Tfs_Configuration] TO DISK = N'\\TFS2010\TFS2010_Backup\Tfs_Configuration_20110727094635F.bak' WITH DESCRIPTION = N'Tfs_Configuration database - Full Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'Tfs_Configuration database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP DATABASE [Tfs_TestCollection] TO DISK = N'\\TFS2010\TFS2010_Backup\Tfs_TestCollection_20110727094635F.bak' WITH DESCRIPTION = N'Tfs_TestCollection database - Full Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'Tfs_TestCollection database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP DATABASE [Tfs_DefaultCollection] TO DISK = N'\\TFS2010\TFS2010_Backup\Tfs_DefaultCollection_20110727094635F.bak' WITH DESCRIPTION = N'Tfs_DefaultCollection database - Full Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'Tfs_DefaultCollection database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP DATABASE [Tfs_Warehouse] TO DISK = N'\\TFS2010\TFS2010_Backup\Tfs_Warehouse_20110727094635F.bak' WITH DESCRIPTION = N'Tfs_Warehouse database - Full Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'Tfs_Warehouse database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP DATABASE [ReportServer] TO DISK = N'\\TFS2010\TFS2010_Backup\ReportServer_20110727094635F.bak' WITH DESCRIPTION = N'ReportServer database - Full Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'ReportServer database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP DATABASE [ReportServerTempDb] TO DISK = N'\\TFS2010\TFS2010_Backup\ReportServerTempDb_20110727094635F.bak' WITH DESCRIPTION = N'ReportServerTempDb database - Full Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'ReportServerTempDb database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP DATABASE [WSS_Config] TO DISK = N'\\TFS2010\TFS2010_Backup\WSS_Config_20110727094635F.bak' WITH DESCRIPTION = N'WSS_Config database - Full Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'WSS_Config database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP DATABASE [WSS_AdminContent] TO DISK = N'\\TFS2010\TFS2010_Backup\WSS_AdminContent_20110727094635F.bak' WITH DESCRIPTION = N'WSS_AdminContent database - Full Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'WSS_AdminContent database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP DATABASE [WSS_Content] TO DISK = N'\\TFS2010\TFS2010_Backup\WSS_Content_20110727094635F.bak' WITH DESCRIPTION = N'WSS_Content database - Full Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'WSS_Content database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 |
Log |
BACKUP LOG [Tfs_Configuration] TO DISK = N'\\TFS2010\TFS2010_Backup\Tfs_Configuration_20110727094647L.trn' WITH DESCRIPTION = N'Tfs_Configuration database - Log Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'Tfs_Configuration database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP LOG [Tfs_TestCollection] TO DISK = N'\\TFS2010\TFS2010_Backup\Tfs_TestCollection_20110727094647L.trn' WITH DESCRIPTION = N'Tfs_TestCollection database - Log Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'Tfs_TestCollection database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP LOG [Tfs_DefaultCollection] TO DISK = N'\\TFS2010\TFS2010_Backup\Tfs_DefaultCollection_20110727094647L.trn' WITH DESCRIPTION = N'Tfs_DefaultCollection database - Log Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'Tfs_DefaultCollection database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP LOG [Tfs_Warehouse] TO DISK = N'\\TFS2010\TFS2010_Backup\Tfs_Warehouse_20110727094647L.trn' WITH DESCRIPTION = N'Tfs_Warehouse database - Log Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'Tfs_Warehouse database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP LOG [ReportServer] TO DISK = N'\\TFS2010\TFS2010_Backup\ReportServer_20110727094647L.trn' WITH DESCRIPTION = N'ReportServer database - Log Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'ReportServer database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 BACKUP LOG [ReportServerTempDb] TO DISK = N'\\TFS2010\TFS2010_Backup\ReportServerTempDb_20110727094647L.trn' WITH DESCRIPTION = N'ReportServerTempDb database - Log Backup', RETAINDAYS = 30, NOFORMAT, NOINIT, NAME = N'ReportServerTempDb database Backup', NOSKIP, REWIND, NOUNLOAD, STATS = 10 |
一、回到 Team Foundation Backups --> 按 [Take Full Backup Now]
二、進行備份作業中
三、備份完成,按 [關閉]
四、開啟 [檔案總管] --> 將目錄位置移至 [C:\TFS2010_Backup],此時您會看到方才的備份檔已全數放置於此