共用方式為


資料庫、部署拓撲和備份

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 部署免於數據遺失。 下表和隨附的圖例顯示要備份的資料庫,並提供這些資料庫在部署中實體散發方式的範例。

資料庫類型 Products 必要元件?
組態資料庫 Azure DevOps Server Yes
倉儲資料庫 Azure DevOps Server Yes
專案集合資料庫 Azure DevOps Server Yes
報告資料庫 SQL Server Reporting Services No
分析資料庫 SQL Server Analysis Services No

部署拓撲

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

注意

此範例不包含 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,您可以備份輔助資料庫。 您也可以嘗試使用備份壓縮,或將備份分割成多個檔案。 以下是備份選項的簡短描述:

完整資料備份(資料庫)

部署的復原性需要完整資料庫備份。 完整備份包含事務歷史記錄的一部分,讓您可以復原完整備份。 完整備份是獨立的,它們代表備份時存在的整個資料庫。 如需詳細資訊,請參閱 完整資料庫備份

差異資料備份 (資料庫)

差異資料庫備份只會記錄自上次完整資料庫備份之後已變更的數據,這稱為差異基底。 差異資料庫備份比完整資料庫備份更小、更快。 此選項可節省備份時間,代價是複雜度增加。 對於大型資料庫,差異備份的間隔可能會比資料庫備份短,以減少工作遺失的風險。 如需詳細資訊,請參閱 差異資料庫備份

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

交易記錄備份

事務歷史記錄是資料庫中除了執行每項修改的交易之外,還發生之所有修改的序列記錄。 事務歷史記錄會記錄每個交易的開始時間、數據的變更,並在必要時有足夠的資訊來復原該交易期間所做的修改。 記錄檔會隨著記錄作業在資料庫中發生而持續成長。

藉由備份事務歷史記錄,您可以將資料庫復原到較早的時間點。 例如,您可以在輸入垃圾數據或發生失敗之前,將資料庫還原至某個點。 除了資料庫備份,事務歷史記錄備份也必須是復原策略的一部分。 如需詳細資訊,請參閱交易記錄備份 (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 或操作時自動建立的任何資料庫名稱。

Database 描述
TFS_Configuration Azure DevOps Server 的組態資料庫包含部署的目錄、伺服器名稱和組態數據。 此資料庫的名稱可能包含TFS_組態之間的其他字元,例如安裝 Azure DevOps Server 的人員的用戶名稱。 例如,資料庫的名稱可能會TFS_UserNameConfiguration
TFS_Warehouse 倉儲資料庫包含用來建置 Reporting Services 所使用之倉儲的數據。 此資料庫的名稱可能包含TFS_Warehouse 之間的其他字元,例如安裝 Azure DevOps Server 的人員的用戶名稱。 例如,資料庫的名稱可能會TFS_UserNameWarehouse。
TFS_CollectionName 專案集合的資料庫包含該集合中專案的所有數據。 此數據報括原始程式碼、組建組態和實驗室管理設定。 集合資料庫的數目會等於集合數目。 例如,如果您的部署中有三個集合,則必須備份這三個集合資料庫。 每個資料庫的名稱可能包含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 分開。 不過,您應該使用標示的交易並同步處理資料庫的維護,以避免同步處理錯誤。