数据库、部署拓扑和备份

Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2013

备注

Azure DevOps Server 以前名为 Visual Studio Team Foundation Server。

通过为 Azure DevOps Server 所依赖的数据库创建定期备份计划,你可以帮助保护你的部署不会丢失数据。 若要完全还原 Azure DevOps Server 部署,请首先备份所有 Azure DevOps Server 数据库。

如果你的部署包括 SQL Server Reporting Services,则还必须备份 Azure DevOps 在这些组件中使用的数据库。 若要防止出现同步错误或数据不匹配错误,您必须将所有备份同步到同一时间戳。 确保成功同步的最简单方法是使用标记的事务。 通过在每个数据库中定期标记相关事务,可在数据库中建立一系列公用恢复点。 有关备份使用报告的单服务器部署的分步指导,请参阅 创建备份计划和计划

如果你的部署包括 SQL Server Reporting Services 或 SharePoint 产品,则还必须备份 Azure DevOps 在这些组件中使用的数据库。 若要防止出现同步错误或数据不匹配错误,您必须将所有备份同步到同一时间戳。 确保成功同步的最简单方法是使用标记的事务。 通过在每个数据库中定期标记相关事务,可在数据库中建立一系列公用恢复点。 有关备份使用 SharePoint Foundation 并使用报告的单服务器部署的分步指导,请参阅 创建备份计划和计划

备份数据库

通过创建数据库备份,保护 Azure DevOps 部署不会丢失数据。 下表和随附的插图显示要备份的数据库,并提供这些数据库在部署中的物理分布方式的示例。

数据库类型 产品 必需的组件?
配置数据库 Azure DevOps Server
仓库数据库 Azure DevOps Server
项目集合数据库 Azure DevOps Server
报告数据库 SQL Server Reporting Services
分析数据库 SQL Server Analysis Services
数据库类型 产品 必需的组件?
配置数据库 Azure DevOps Server
仓库数据库 Azure DevOps Server
项目集合数据库 Azure DevOps Server
报告数据库 SQL Server Reporting Services
分析数据库 SQL Server Analysis Services
SharePoint 产品数据库 SharePoint 产品

部署拓扑

根据部署配置,需要备份的所有数据库可能位于同一物理服务器上,如此示例拓扑所示。

备注

此示例不包括 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 的报表,则必须备份报表数据库和分析数据库。 不过,您仍必须在还原后重新生成某些数据库,如仓库。
  • Report Server 的加密密钥 -Report Server 具有必须备份的加密密钥。 此密钥保护存储在报表服务器数据库中的敏感信息。 可使用 Reporting Services 配置工具或命令行工具来手动备份此密钥。
  • Sharepoint 产品的数据库 -如果你的部署使用 SharePoint 产品来托管项目门户网站,则必须备份多个数据库。 这些数据库包括您的部署使用的每个 SharePoint web 应用程序的管理数据库以及托管项目门户网站的网站集数据库。 最好将部署配置为在部署中为每个项目集合使用单独的网站集。 正如在 Azure DevOps Server 中,可将项目集合作为一个单元进行备份和还原,可在 SharePoint 产品中备份和还原网站集。 如果部署中的一个或多个集合使用站点或子站点(而非网站集)作为其根站点,则您可能无法完全备份和还原这些集合。 有关详细信息,请参阅 用项目集合组织服务器

    备注

    你可能会假设你必须备份项目门户网站页的数据库和网站。 但是,SharePoint 产品会从数据库动态生成网站。 因此,当您备份数据库时,还会备份项目中显示为网站的部分。 如果已在 SharePoint 产品中创建了自定义网站集、网站模板或 web 部件,但在 Azure DevOps Server 之外,则必须单独备份它们。 有关详细信息,请参阅 Backup (SharePoint Foundation)

备份的事先准备

部署 Azure DevOps 时,应记录所创建的帐户以及所指定的任何计算机名称、密码和安装选项。 还应在安全的位置保留所有恢复资料、文档以及数据库和事务日志备份的副本。 为了预防灾难(例如火灾或地震)的发生,应将服务器备份的副本存放在服务器位置之外的其他位置上。 此策略将有助于防止丢失关键数据。 最佳做法是保存三份备份媒体副本,应至少将其中一份副本保存在远离现场的受控环境中。

重要

定期执行试验性数据还原,以验证您的文件是否已正确备份。 试验性还原可以发现不会与仅软件验证一起显示的硬件问题。

备份和还原数据库时,必须将数据备份到带网络地址的媒体上(例如,已作为网络驱动器共享的磁带和磁盘)。 您的备份计划中应包括管理媒体的规定,例如下列策略:

  • 存储和回收备份集的跟踪和管理计划。
  • 覆盖备份媒体的时间表。
  • 在多服务器环境中,决定是使用集中备份还是使用分布式备份。
  • 跟踪媒体的可用生命周期的方法。
  • 将丢失备份集或备份媒体(例如磁带)的影响降低到最小的步骤。
  • 决定是现场存储备份集还是远离现场存储备份集,并分析此决定对恢复时间有何影响。

由于 Azure DevOps 数据存储在 SQL Server 数据库中,因此你不必备份安装了 Azure DevOps 客户端的计算机。 如果发生了涉及这些计算机的媒体故障或灾难,则可以重新安装客户端软件并重新连接到服务器。 通过重新安装客户端软件,你的用户将拥有从备份还原客户端计算机的更清晰且更可靠的替代方法。

您可以使用 " 计划的备份 " 功能来备份服务器,或者通过在 SQL Server 中手动创建维护计划来备份与 Azure DevOps 部署相关的数据库。 Azure DevOps 数据库可彼此合作,并且如果创建手动计划,则应同时备份和还原这些数据库。 有关备份数据库的策略的详细信息,请参阅 备份和还原 SQL Server 数据库

备份类型

了解可用的备份类型可帮助你确定用于备份部署的最佳选项。 例如,如果您正在进行一个大型部署并希望在高效使用有限存储资源的同时防止数据丢失,则可以配置差异备份以及完整数据备份。 如果使用 SQL Server AlwaysOn,则可以备份辅助数据库。 您还可以尝试使用备份压缩或将备份拆分成多个文件。 以下是对您的备份选项的简短说明:

完整数据备份 (数据库)

部署的可恢复性需要完整的数据库备份。 完全备份包括一部分事务日志,以便可以恢复完全备份。 完全备份是独立的,这是因为这些备份表示整个数据库在备份时的情况。 有关详细信息,请参阅 完整数据库备份

差异数据备份 (数据库)

差异数据库备份仅记录自上次完整数据库备份以来发生更改的数据,该备份称为差异基准。 与完全数据库备份相比,差异数据库备份体积更小,速度也更快。 此选项可节省备份时间,但会以增加复杂性为代价。 对于大型数据库,进行差异备份的间隔可以比数据库备份更短,从而可降低丢失工作的可能性。 有关详细信息,请参阅 差异数据库备份

还应定期备份事务日志。 使用完全数据库备份模型时,恢复数据需要这些备份。 如果备份事务日志,则可以将数据库恢复到故障点或更早的时间点。

事务日志备份

事务日志是在数据库中发生的所有修改以及执行每个修改的事务的一系列记录。 事务日志记录每个事务的启动、数据更改,必要时还记录用于撤消在该事务中所做修改的足够信息。 随着数据库中记录的操作的增多,日志也不断增大。

通过备份事务日志,可以将数据库恢复到以前的某个时间点。 例如,你可以将数据库还原到输入不需要的数据之前的某个时间点或发生故障。 除数据库备份之外,恢复策略也必须包括事务日志备份。 有关详细信息,请参阅 (SQL Server) 的事务日志备份

事务日志备份所使用的资源通常比完全备份少。 因此,创建事务日志备份可以比创建完全备份更加频繁,从而降低丢失数据的风险。 不过,有时事务日志备份要比完全备份还大。 例如,事务速率较高的数据库会导致事务日志迅速增长。 在这种情况下,应更加频繁地创建事务日志备份。 有关详细信息,请参阅 解决事务日志完全 (SQL Server 错误 9002)

可执行以下类型的事务日志备份:

  • 纯日志备份只包含某个时间段的事务日志记录,不包括任何批量更改。
  • 批量日志备份包含由批量操作更改的日志和数据页。 不允许执行时间点恢复。
  • 尾日志备份是从可能损坏的数据库中提取出来的,以捕获尚未备份的日志记录。 在发生故障后提取尾日志备份,以防止工作丢失,该备份中可以包含纯日志数据也可以包含批量日志数据。

由于数据同步对于成功还原 Azure DevOps Server 至关重要,因此,如果要手动配置备份,则应将标记的事务作为备份策略的一部分使用。 有关详细信息,请参阅 创建备份计划和计划手动备份 Azure DevOps Server

应用层服务备份

逻辑应用程序层所需的唯一备份是 Reporting Services 的加密密钥。 如果您使用“计划的备份”功能来备份您的部署,则此密钥将作为计划的一部分进行备份。 您可能认为必须备份用作项目门户网站的网站。

如果你在 Azure DevOps Server 部署过程中集成了 SharePoint 产品,则将在备份用于 Azure DevOps Server 和 SharePoint 产品的数据库的过程中备份门户。 但是,如果您指定的网站不是使用集成的 Web 应用程序创建的,则您必须手动备份和还原这些站点。 此外,如果你对 SharePoint 产品或服务有任何自定义,则还必须备份这些自定义项或对其进行记录,以便可以在新服务器上重现它们。

尽管可以比数据层更轻松地备份应用层,但仍有几个步骤可用于还原应用层。 您必须为 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 或运行时自动创建的任何数据库的名称。

数据库 描述
TFS_Configuration Azure DevOps Server 的配置数据库包含部署的目录、服务器名称和配置数据。 此数据库的名称可能包含 TFS_配置 之间的其他字符,例如安装 Azure DevOps Server 的人员的用户名。 例如,数据库的名称可能 TFS_UserNameConfiguration
TFS_Warehouse 仓库数据库包含用于生成 Reporting Services 所用仓库的数据。 此数据库的名称可能包含 TFS_仓库 之间的其他字符,例如安装 Azure DevOps Server 的人员的用户名。 例如,数据库的名称可能 TFS_UserNameWarehouse。
TFS_CollectionName 项目集合的数据库包含该集合中项目的所有数据。 此类数据包括源代码、生成配置以及实验室管理配置。 集合数据库的数量与集合的数量相等。 例如,如果部署中有三个集合,则必须备份这三个集合数据库。 每个数据库的名称可能包含 TFS_CollectionName 之间的其他字符,如创建该集合的人员的用户名。 例如,可能会 TFS_UserNameCollectionName 集合数据库的名称。
TFS_Analysis 用于 SQL Server Analysis Services 的数据库包含 Azure DevOps Server 部署的数据源和多维数据集。 此数据库的名称可能包含 TFS_分析 之间的其他字符,例如安装 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。 但是,您应使用标记的事务并同步数据库的维护,以避免发生同步错误。

SharePoint 产品默认数据库名称

备注

如果您手动备份或还原 SharePoint 产品使用的数据库,则不应使用标记的事务。 但是,为了帮助避免同步错误,应尝试同步 SharePoint 产品和 Azure DevOps Server 的备份和还原计划。 有关详细信息,请参阅为 SharePoint Foundation 创建备份计划

数据库 描述
WSS_Config SharePoint 产品的配置数据库包含所有站点的列表,例如内容数据库、网站模板、自定义 web 部件以及其他来自 SharePoint 管理中心的设置。
WSS_Content SharePoint 产品的内容数据库包含项目门户网站中的实际内容。
注意:此数据库的名称将取决于所安装的 SharePoint 产品的版本,以及安装该数据库的用户是否自定义该名称。
WSS_AdminContent SharePoint 产品的管理数据库包含用户、角色和数据库的安全信息。