将 Azure DevOps 从一个硬件移动到另一个硬件或从另一个硬件克隆到本地 Azure DevOps

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

可以移动或克隆 Azure DevOps Server 软件的部署。 将 Azure DevOps Server 从一台计算机迁移到另一台计算机,方法是将其还原到新的硬件(称为基于还原的移动)。 例如,你可能想要将 Azure DevOps Server 移动到容量更大的服务器或提高处理速度。 移动到新服务器时,不会丢失任何项目历史记录。

若要克隆 Azure DevOps Server 部署,请执行与移动相同的步骤以及另外几个步骤。

计划停止使用原始硬件和 Azure DevOps Server 部署时执行移动。 如果打算继续使用原始 Azure DevOps Server 实例,请执行克隆。

重要

在某些情况下,你可能想要更改 Azure DevOps Server 部署及其硬件的域。 更改域是基于环境的移动,并且不应合并这两种移动类型。 首先完成硬件移动,然后更改环境。

检查权限

若要成功移动 Azure DevOps Server,你需要是两组硬件(旧硬件和新硬件)的管理员。 此外,你需要是 Azure DevOps Server 的管理员(或具有等效的权限),以及部署所依赖的所有软件:SQL Server、报告以及部署互操作的任何其他软件,例如 Project Server。

请确保你是以下组的成员:

  • 服务器:管理员(本地管理员组或等效服务器)
  • Azure DevOps Server:Team Foundation 管理员和管理控制台用户
  • SQL Server:sysadmin

如果你不是其中一个或多个组的成员, 请立即获取权限。

备份数据库和加密密钥

  1. 打开 Azure DevOps Server 的管理控制台,并在 “计划备份 ”页上执行完整备份。 备份将备份为备份计划中为备份配置的所有内容,但会立即备份,而不是根据计划中计划的时间进行备份。 如果部署使用报告,则可以备份加密密钥作为此备份集的一部分。

    作业完成后,可以关闭窗口

    (如果没有配置备份,则必须 创建计划 ,然后才能进行完整备份。

  2. 备份完成后,验证备份在存储设备或网络共享上是否可用,以及是否可以从新硬件访问此备份。

在新数据层服务器上安装和配置 SQL Server

  • 在新服务器上安装 SQL Server,并确保它正常运行。 如果以前的部署使用了报告,请确保包含报表和分析服务组件。 必须安装以前使用的相同版本,包括 Service Pack 和累积更新级别。

    安装 SQL Server 2008 R2 - 功能

    作为替代方法,可以在已安装匹配版本的服务器上创建 SQL Server 实例,并将 Azure DevOps Server 数据库还原到该实例,但这需要更多还原后配置。

    有关安装和配置 SQL Server 的选项的详细信息, 请转到此处

    安装 SQL Server 后,如果部署包括报告,请打开 SQL Server Management Studio 并分离 ReportServer 和 ReportServerTempDB 数据库。 否则,可能无法使用为 Azure DevOps Server 数据库创建的备份还原这些数据库。

    还原之前必须分离现有数据库

在新应用程序层服务器上安装和配置软件

若要为 Azure DevOps Server 配置新的服务器或服务器,必须先安装和配置支持它所需的软件。 此软件包括以下组件:

  • 部署配置支持的操作系统

  • 安装并配置 Windows、IIS(如果未默认配置),并确保服务器及其软件正常运行。 

    有关详细信息,请参阅 Azure DevOps Server 的系统要求。

还原 Azure DevOps Server 数据库

若要使用还原工具还原 Azure DevOps Server 数据库,必须在新的数据层服务器上安装但不配置 Azure DevOps Server,然后在计划备份节点中使用还原功能。

如果要使用 SQL Server 还原工具手动还原 Azure DevOps Server 数据库,则可以,但这是一个更困难的过程。 此外,必须在新部署中手动取消查询数据库。 Azure DevOps Server 中的还原向导会在还原过程中自动执行此操作,但该功能不是 SQL Server 还原工具的一部分。

  1. 启动 Azure DevOps Server 安装媒体。 在 Team Foundation Server 安装 页上,选择“ 安装”。

  2. 安装完成后, Team Foundation Server 配置中心 将打开。 关闭它。

    管理控制台以未配置状态自动打开。 这是正常情况。

  3. 若要启动还原向导,请打开 Azure DevOps Server 的管理控制台并打开 计划备份

    启动还原向导

  4. 指定备份集的路径,并选择在静止旧部署后创建的集。

    选择网络路径,然后选择还原集

  5. 完成向导并将数据库还原到 SQL Server 的新实例。

    数据库将还原到新服务器

(克隆选项)重新配置服务器 ID 并重新映射数据库

注意

在建立新的 Azure DevOps Server 部署之前,建议使用已在生产中的数据库备份在另一台服务器上使用 PrepareClone。 不再需要此命令,因为我们将其功能合并到配置向导中的预生产升级和克隆方案中。

如果要继续使用原始 Azure DevOps Server 实例,请在新的应用程序层服务器上执行下一组步骤。 这些步骤是必需的,以避免一个或两个部署损坏的风险。 如果这两个服务器都处于实时状态,则最终可能会损坏,尤其是在它们指向相同的报告资源时。

  1. 以管理员身份打开命令提示符窗口,并将目录更改为 Drive:%programfiles%\TFS 12.0\Tools。 打开命令提示符窗口并输入:

  2. 运行 TFSConfig PrepareClone 命令以删除有关计划备份和报告资源的信息。

    TFSConfig PrepareClone /SQLInstance:ServerName /DatabaseName:DatabaseName /notificationURL: ApplicationTierURL
    
  3. 运行 TFSConfig ChangeServerID 命令以更改与数据库关联的服务器 GUID。 GUID 在 Azure DevOps Server 部署中必须是唯一的。

    TFSConfig ChangeServerID /SQLInstance:ServerName] /DatabaseName:ConfigurationDatabaseName [/ProjectCollectionsOnly] [/ConfigDBOnly] [/usesqlalwayson]
    
  4. 运行 TFSConfig RemapDBs 命令,将克隆的 Azure DevOps Server 重定向到其数据库。

    TFSConfig RemapDBs /DatabaseName:ServerName;DatabaseName /SQLInstances:ServerName1,erverName2 [/AnalysisInstance:ServerName] [/AnalysisDatabaseName:DatabaseName] [/review] [/continue] [/usesqlalwayson]
    

配置应用程序层服务器

  1. 在 Azure DevOps Server 的管理控制台中,选择“配置已安装的功能”以启动配置中心。

  2. 启动“仅应用程序层”向导,并在“数据库中”指定还原 Azure DevOps Server 数据库的新 SQL Server 实例。 从列表中选择Tfs_Configuration数据库。

    选择 SQL Server 和数据库备份集

  3. 在关闭向导的最后一页之前,请查找“i”符号。 它表示可能需要将来参考的信息。 最后一页还包括配置日志的位置。

    请注意任何问题和日志文件位置

更新 Azure DevOps Server URL

  1. 转到应用程序层节点,查看通知和 Web 门户 URL。 请注意,它们仍指向旧部署的位置。 更新它们。

    通知和 Web URL 已过期

  2. 使用新服务器的名称更新 URL 后,请查看信息以确保正确。

    服务器 URL 仍使用 localhost

更新所有服务帐户

必须更新 Azure DevOps Server(TFSService)的服务帐户和数据源帐户(TFSReports)。 即使这些帐户未更改,也必须更新信息,以帮助确保帐户的标识和格式适合新服务器。

  1. 以管理员身份打开命令提示符窗口,并将目录更改为 Drive:\%programfiles%\TFS 12.0\Tools。

  2. 在命令提示符下,键入以下命令以添加 Azure DevOps 的服务帐户,其中 DatabaseName 是配置数据库的名称(默认情况下,TFS_Configuration):

    TfsConfig Accounts /add /AccountType:ApplicationTier /account: AccountName /SQLInstance: ServerName /DatabaseName: DatabaseName

  3. 在命令提示符处,键入以下命令以添加数据源帐户:

    TfsConfig 帐户 /add /AccountType:ReportingDataSource /account: AccountName /SQLInstance:ServerName /DatabaseName:DatabaseName

    有关详细信息,请参阅 Accounts 命令

更新生成服务器

现在,需要将生成服务器重定向到指向已移动的 Azure DevOps Server 部署。

  1. 在每个生成服务器上,打开管理控制台并停止生成服务。

  2. 在生成服务的属性中,更新通信属性。

    停止服务,然后进行更改

配置 Reporting and Analysis Services

如果部署使用报表服务器,则必须将 Azure DevOps Server 重定向到其位置,重启仓库,然后手动重新生成 Analysis Services 的数据库。 如果不使用报告,请跳过此过程。

  1. 转到“报告”节点。 列出的报表服务器值是旧值,而不是新值,因此对其进行编辑。

    报表仍指向旧服务器

  2. 将所有三个选项卡上的值更改为指向新服务器。 请确保在新部署中为数据源帐户提供正确的信息。

    确保所有 3 个选项卡上的信息正确

  3. 选择“ 启动作业 ”以重启报告。

  4. 选择 “开始重新生成 ”以重新生成仓库。

验证用户、组和服务帐户的权限

移动到新硬件后,请确保为部署的所有用户、组和服务帐户配置了每个服务器上正常运行所需的权限。 某些权限(例如 SQL Server 或本地计算机上的其他权限)无法自动迁移。 例如,Azure DevOps 管理员必须是应用程序层服务器上的本地 管理员 组的成员才能打开管理控制台,因此必须手动将它们添加到该组。

  • 登录到服务器,并确保使用操作所需的权限配置用户、组和服务帐户。 在项目组和团队中手动抽查成员身份,并验证这些组和团队是否具有预期的权限。

  • 浏览到项目集合并确保该集合中的所有项目按预期显示,并且这些项目中的用户可以适当地访问其工作项。

  • 打开 Web 门户并验证团队网站和团队是否按预期显示。

不确定需要哪些组和权限? 有关详细信息,请参阅向项目添加用户、为项目集合设置管理员权限、为 Azure DevOps Server 设置管理员权限以及 Azure DevOps Server 中的服务帐户和服务帐户和依赖项。

刷新客户端计算机上的数据缓存

  • 登录到服务器并使用 ClientService Web 服务强制客户端更新缓存以跟踪工作项和 Azure DevOps 版本控制。

    http://ServerName:8080/tfs/WorkItemTracking/v3.0/ClientService.asmx
    

    有关详细信息,请参阅 刷新客户端计算机上的数据缓存。

    如果要下次登录时刷新所有用户的整个缓存,请使用 witadmin rebuildcache 命令。

    注意

    如果将数据库还原到不同的时间点,则还需要刷新版本控制缓存,如客户端计算机上的“刷新数据缓存”中所述

通知用户

移动 Azure DevOps Server 后,需要告知用户如何连接到已移动的部署。 具体而言,需要向他们提供以下信息:

  • 新服务器的名称和 Web 门户的 URL,以便他们可以重新连接到其项目

  • 报告的新数据库名称(如果报告是部署的一部分)

  • 如果他们是使用 Git 的项目的成员,则说明如何针对该项目的每个存储库更新他们在本地拥有的每个克隆。 具体而言,它们必须为每个克隆运行以下命令:

    git remote set-url <remote name> <new URL>
    

    用户可以通过从“资源管理器”选项卡浏览项目来查看每个克隆的 URL。

    复制 URL 以手动克隆存储库

配置备份

尽管已为旧部署计划了备份,但不会更改这些计划备份来备份已移动的部署。 需要配置它们。

  • 在管理控制台中,转到“计划备份”节点,并重新配置计划备份,以在新服务器上备份 Azure DevOps Server 数据库。 有关详细信息,请参阅 创建备份计划和计划

问题解答

问:我想更改域,而不是物理服务器。 我是否可以执行此操作?

答: 是的。 这称为基于环境的移动,可在此处找到这些步骤。 不应尝试将基于环境的移动与基于硬件的移动组合在一起。 首先完成硬件移动,然后更改环境。

问:我刚刚意识到,在迁移到新硬件后,我想继续使用旧的 Azure DevOps Server。 我是否可以执行此操作?

答: 是的,但请务必立即执行其他步骤。 理想情况下,应在移动或克隆步骤中执行这些步骤。 这是避免一个或两个部署损坏风险的最佳方法。 如果这两个服务器都处于实时状态,则最终可能会损坏,尤其是在它们指向相同的报告资源时。

若要修复此问题:

  1. 在新 服务器上运行 TFSConfig PrepareClone 命令

  2. 在新服务器上运行 TFSConfig ChangeServerID 命令

  3. 在新服务器上运行 TFSConfig RemapDBs 命令

问:我有一个与 Project Server 集成的部署。 我是否需要执行任何额外的步骤才能使用移动的 Azure DevOps Server?

答:是的,完成硬件移动后,需要使用带有 /tfs/force/pwa 选项的 TFSAdmin ProjectServer /RegisterPWA 命令将 Azure DevOps Server 重新注册到 Project Server。 可以在此处阅读有关 Azure DevOps Server 与 Project Server 集成的详细信息。