資料庫、部署拓撲和備份

Azure DevOps Server 2022 |Azure DevOps Server 2020 |Azure DevOps Server 2019

您可以為 Azure DevOps Server 相依的資料庫建立定期備份排程,以協助保護您的部署免於數據遺失。 若要完全還原 Azure DevOps Server 部署,請先備份所有 Azure DevOps Server 資料庫。

如果您的部署包含 SQL Server Reporting Services,您也必須備份 Azure DevOps 在這些元件中使用的資料庫。 若要防止發生同步處理錯誤或資料不符錯誤,您必須將所有備份同步處理為相同時間戳記。 確保同步處理成功的最簡單方式就是使用有標示的異動。 藉由定期標記每個資料庫中的相關交易,您可以在資料庫中建立一系列常見的恢復點。 如需使用報告的備份單一伺服器部署的逐步指引,請參閱 建立備份排程和計劃

備份資料庫

藉由建立資料庫備份,保護您的 Azure DevOps 部署免於數據遺失。 下表和隨附的圖例顯示要備份的資料庫,並提供這些資料庫在部署中實際散發方式的範例。

資料庫類型 產品 必要元件?
設定資料庫 Azure DevOps Server
倉儲資料庫 Azure DevOps Server
專案集合資料庫 Azure DevOps Server
報告資料庫 SQL Server Reporting Services No
分析資料庫 SQL Server Analysis Services

部署拓撲

根據您的部署組態,所有需要備份的資料庫可能位在相同的實體伺服器上 (如此範例拓撲所示)。

注意

此範例不包含 Reporting Services 或 SharePoint 產品,因此您不需要備份任何與報表、分析或 SharePoint 產品相關聯的資料庫。

簡單 Azure DevOps Server 資料庫結構

替代方式是資料庫可能散發至多部伺服器和伺服器陣列。 在此範例拓撲中,您必須備份下列範圍橫跨六部伺服器或伺服器陣列的資料庫:

  • 組態資料庫

  • 倉儲資料庫

  • 位於 SQL Server 叢集的專案集合資料庫

  • 位於執行 SQL Server 之獨立伺服器上的集合資料庫

  • 位在執行 Reporting Services 之伺服器上的資料庫

  • 位在執行 Analysis Services 之伺服器上的資料庫

  • SharePoint 產品系統管理資料庫和這兩個 SharePoint Web 應用程式的網站集合資料庫

    如果您的 SharePoint 資料庫跨多部伺服器進行調整,您無法使用 [排程備份] 功能來備份它們。 您必須手動設定這些資料庫的備份,並確定這些備份會與 Azure DevOps Server 資料庫備份同步。 如需詳細資訊,請參閱手動備份 Azure DevOps Server

複雜 Azure DevOps Server 資料庫結構

在上述兩個範例中,您不需要備份任何連接至伺服器的用戶端。 不過,您可能需要手動清除用戶端計算機上 Azure DevOps Server 的快取,才能重新連線到還原的部署。

要備份的資料庫

下列清單會根據您的部署資源,提供有關您必須備份之專案的其他詳細數據。

重要

下列清單中的所有資料庫都會 SQL Server 資料庫。 雖然您可以隨時使用 SQL Server Management Studio 來備份個別資料庫,但您應該盡可能避免使用這類個別備份。 如果您從個別備份還原,可能會發生非預期的結果,因為 Azure DevOps 所使用的資料庫全都相關。 如果您只備份一個資料庫,該資料庫中的數據可能無法與其他資料庫中的數據同步處理。

  • Azure DevOps Server 的資料庫 - Azure DevOps Server 的邏輯數據層包含數個 SQL Server 資料庫,包括組態資料庫、倉儲資料庫,以及部署中每個專案集合的資料庫。 這些資料庫可能全都位於相同的伺服器上、分散在相同 SQL Server 部署中的數個實例,或分散到多部伺服器。 不論其實際散發情況為何,您都必須將所有資料庫備份為相同時間戳記,以協助確保資料不遺失。 您可以手動執行資料庫備份,也可以使用在特定時間或間隔執行的維護計劃來自動執行資料庫備份。

    重要

    Azure DevOps 資料庫清單不是靜態的。 每當您建立集合時都會建立新的資料庫。 當您建立集合時,請務必將該集合的資料庫加入至您的維護計畫。

  • Reporting Services 和 Analysis Services 的資料庫 - 如果您的部署使用 SQL Server Reporting Services 或 SQL Server Analysis Services 來產生 Azure DevOps Server 的報告,您必須備份報告和分析資料庫。 不過,您在還原之後仍必須重新產生特定資料庫,例如倉儲。
  • 報表伺服器的加密金鑰 - 報表伺服器具有您必須備份的加密金鑰。 此金鑰會保護儲存於報表伺服器資料庫中的機密資訊。 您可以使用 Reporting Services 組態工具或命令列工具,手動備份此金鑰。

備份的進階準備工作

當您部署 Azure DevOps 時,應該保留您所建立帳戶的記錄,以及您指定的任何電腦名稱、密碼和設定選項。 您也應該在安全的位置保存所有復原資料、文件以及資料庫與異動記錄備份的複本。 若要保護不受災害影響 (例如火災或地震),則應該在與伺服器位置不同的位置中保存伺服器備份的複本。 此策略可保護您不會遺失重要的資料。 最佳做法是應該保存備份媒體的三個複本,並至少應該將其中一個複本保存在受控制環境的不同位置。

重要

定期執行評估資料還原,以驗證是否正確地備份檔案。 試用還原可能會顯示未顯示軟體專用驗證的硬體問題。

備份及還原資料庫時,您必須將資料備份至有網路位址的媒體 (例如,當做網路磁碟機共用的磁帶或磁碟)。 您的備份計劃應該包括可管理媒體的提供事項,例如下列方法:

  • 用來存放及回收處理備份集的追蹤與管理計劃。
  • 用來覆寫備份媒體的排程。
  • 在多伺服器環境中,決定使用集中式或分散式備份。
  • 追蹤媒體可用期限的方法。
  • 將遺失備份集或備份媒體 (例如磁帶) 的影響降至最低的程序。
  • 決定要在本地或異地存放備份集,以及分析此決定對復原時間的影響。

因為 Azure DevOps 資料儲存在 SQL Server 資料庫中,所以您不需要備份安裝 Azure DevOps 用戶端的電腦。 如果發生涉及這些電腦的媒體失敗或災害,您可以重新安裝客戶端軟體,並重新連線到伺服器。 藉由重新安裝用戶端軟體,您的使用者將會有更簡潔且更可靠的替代方案,以從備份還原客戶端計算機。

您可以使用可用的排程備份功能來備份伺服器,或在 SQL Server 中手動建立維護計劃,以備份與 Azure DevOps 部署相關的資料庫。 Azure DevOps 資料庫會彼此關聯,而且如果您建立手動計劃,則應該同時備份和還原它們。 如需備份資料庫策略的詳細資訊,請參閱備份和還原 SQL Server 資料庫

備份類型

瞭解可用的備份類型可協助您判斷備份部署的最佳選項。 例如,如果您使用大型部署,並且在有效率地使用有限的儲存資源的同時想要防止資料遺失,則可以設定差異備份,以及完整資料備份。 如果您使用 SQL Server Always On,您可以建立輔助資料庫的備份。 您也可以嘗試使用備份壓縮,或分割跨多個檔案的備份。 以下是備份選項的簡短描述:

(資料庫的完整數據備份)

部署的復原能力需要完整資料庫備份。 完整備份包括一部分異動記錄,如此才能復原完整備份。 完整備份是獨立的 (Self-Contained),因此它們代表在您進行備份時存在的整個資料庫。 如需詳細資訊,請參閱 完整資料庫備份

差異數據備份 (資料庫)

差異資料庫備份只會記錄自上次完整資料庫備份以來已變更的數據,這稱為差異基底。 差異資料庫備份比完整資料庫備份還要小,而且速度也比較快。 此選項可節省備份時間,但會增加複雜度。 針對大型資料庫,差異備份的發生間隔比資料庫備份還要短,因而減少工作遺失的可能。 如需詳細資訊,請參閱 差異資料庫備份

您也應該定期備份異動記錄。 如果您使用完整資料庫備份模型,則在復原資料時需要這些備份。 如果您備份事務歷史記錄,您可以將資料庫復原到失敗點或先前的時間點。

交易記錄備份

事務歷史記錄是資料庫中除了執行每個修改的交易之外,所有修改的序列記錄。 異動記錄會記錄每個異動的開始、資料的變更,必要時也會記錄足夠的資訊來復原該異動期間所進行的修改。 資料庫中發生可記錄的作業時,記錄檔就會持續擴充。

備份異動記錄,就可以將資料庫復原至較早的時間點。 例如,您可以將資料庫還原到輸入垃圾數據之前的時間點,或發生失敗。 除了資料庫備份以外,異動記錄檔備份也必須是還原策略的一部分。 如需詳細資訊,請參閱交易記錄備份 (SQL Server)

異動記錄檔備份使用的資源通常會比完整備份少。 因此,比起完整備份,您可以更經常建立異動記錄備份,因而降低遺失資料的風險。 不過,有時候異動記錄檔備份會比完整備份還大。 例如,具有高交易率的資料庫會導致事務歷史記錄快速成長。 在這種情況下,您應該更頻繁地建立異動記錄備份。 如需詳細資訊,請參閱針對完整事務歷史記錄進行疑難解答, (SQL Server 錯誤 9002)

您可以執行下列類型的異動記錄備份:

  • 純記錄檔備份只包含間隔的異動記錄檔記錄,而不含任何大量變更。
  • 大量記錄檔備份包含大量作業所變更的記錄檔和資料頁。 不允許時間點復原。
  • 尾端記錄檔備份則是在可能損毀的資料庫上執行,以擷取尚未備份的記錄檔記錄。 會在發生故障之後進行結尾記錄備份,防止工作遺失並可包含純記錄檔或大量記錄檔資料。

由於數據同步處理對於成功還原 Azure DevOps Server 很重要,因此如果您要手動設定備份,您應該使用標示的交易作為備份策略的一部分。 如需詳細資訊,請參閱建立備份排程和規劃和手動備份 Azure DevOps Server

應用層服務備份

邏輯應用層所需的唯一備份是 Reporting Services 的加密金鑰。 如果您使用排程備份功能來備份您的部署,則會為您備份這個金鑰做為計劃的一部分。 您可能會假設您必須備份做為專案入口網站的網站。

雖然您可以比數據層更輕鬆地備份應用層,但仍有數個步驟可還原應用層。 您必須為 Azure DevOps Server 安裝另一個應用層、重新導向專案集合以使用新的應用層,以及重新導向專案的入口網站。

預設資料庫名稱

如果您未自訂資料庫的名稱,您可以使用下表來識別部署 Azure DevOps Server 中使用的資料庫。 如前所述,並非所有部署都會有這些資料庫。 例如,如果您未使用 Reporting Services 設定 Azure DevOps Server,則不會有 ReportServer 或 ReportServerTempDB 資料庫。 同樣地,除非您將 Azure DevOps Server 設定為支持實驗室管理,否則您將沒有 System Center Virtual Machine Manager (SCVMM) VirtualManagerDB 的資料庫。 此外,Azure DevOps Server 使用的資料庫可能會分散到多個 SQL Server 實例或多個伺服器。

注意

根據預設,前置詞TFS_會新增至當您安裝 Azure DevOps Server 或作業時自動建立的任何資料庫名稱。

資料庫 Description
TFS_Configuration Azure DevOps Server 的組態資料庫包含部署的目錄、伺服器名稱和組態數據。 此資料庫的名稱可能包含TFS_與組之間的額外字元,例如安裝 Azure DevOps Server的人員的用戶名稱。 例如,資料庫的名稱可能會TFS_UserNameConfiguration
TFS_Warehouse 倉儲資料庫包含的資料可用來建置 Reporting Services 所使用的倉儲。 此資料庫的名稱可能包含TFS_Warehouse 之間的額外字元,例如安裝 Azure DevOps Server 的人員的用戶名稱。 例如,資料庫的名稱可能會TFS_UserNameWarehouse。
TFS_CollectionName 專案集合的資料庫包含該集合中專案的所有數據。 此資料包括原始程式碼、組建組態和 Lab Management 組態。 集合資料庫的數目將會等於集合的數目。 例如,如果您的部署中有三個集合,則必須備份這三個集合資料庫。 每個資料庫的名稱可能包含 TFS_CollectionName 之間的額外字元,例如建立集合的人員的用戶名稱。 例如,集合資料庫的名稱可能會TFS_UserNameCollectionName。
TFS_Analysis SQL Server Analysis Services的資料庫包含用於部署 Azure DevOps Server 的數據源和 Cube。 此資料庫的名稱可能包含 TFS_ 與 Analysis 之間的額外字元,例如安裝 Analysis Services 的人員的用戶名稱。 例如,資料庫的名稱可能會TFS_UserNameAnalysis。
注意:您可以備份此資料庫,但您必須從還原的 TFS_Warehouse 資料庫重建倉儲。
ReportServer Reporting Services資料庫包含部署 Azure DevOps Server的報表和報表設定。
注意:如果 Reporting Services 安裝在與 Azure DevOps Server 不同的伺服器上,則 Azure DevOps Server 的數據層伺服器上可能不存在此資料庫。 在此情況下,您必須設定、備份和還原它與 Azure DevOps Server 分開。 您應該同步處理資料庫的維護,以避免同步處理錯誤。
ReportServerTempDB Reporting Services 的暫存資料庫會暫時存放執行特定報表時的資訊。
注意:如果 Reporting Services 安裝在與 Azure DevOps Server 不同的伺服器上,則 Azure DevOps Server 的數據層伺服器上可能不存在此資料庫。 在此情況下,您必須設定、備份和還原它與 Azure DevOps Server 分開。 不過,您應該同步維護資料庫,以避免發生同步處理錯誤。
VirtualManagerDB SCVMM 的管理資料庫包含您在 SCVMM 系統管理員主控台中所檢視的資訊,例如虛擬機器、虛擬機器主機、虛擬機器程式庫伺服器以及其屬性。
注意:如果 SCVMM 安裝在與 Azure DevOps Server 不同的伺服器上,則此資料庫可能不存在於數據層伺服器上,Azure DevOps Server。 在此情況下,您必須設定、備份和還原它與 Azure DevOps Server 分開。 不過,您應該使用標示的異動並同步維護資料庫,以避免發生同步處理錯誤。