为本地 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,你需要是两组硬件 (新旧) 的管理员。 此外,你需要是管理员 (或拥有Azure DevOps Server和部署所依赖的所有软件的等效权限) :SQL Server、报告以及部署与之互操作的任何其他软件,例如 Project Server。

请确保你是以下组的成员

  • 服务器:Administrators(本地管理员组或权限相同者)
  • 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 服务器设置” 页上,选择“ 安装”。

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

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

  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 RemapDB 命令,将克隆Azure DevOps Server重定向到其数据库。

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

配置应用程序层服务器

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

  2. 启动“仅 Application-Tier”向导,并在“数据库”中指定在其中还原了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 Accounts /add /AccountType:ReportingDataSource /account:AccountName/SQLInstance:ServerName/DatabaseName:DatabaseName

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

更新生成服务器

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

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

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

    停止服务,然后进行更改

配置 Reporting Services 和 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数据库。 有关详细信息,请参阅Create备份计划和计划

问题解答

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

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

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

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

若要修复此问题:

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

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

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

问:我拥有与 Project Server 集成的部署。 是否必须执行任何额外的步骤才能使其与已移动的Azure DevOps Server一起使用?

答:是的,完成硬件移动后,需要将 TFSAdmin ProjectServer/RegisterPWA 命令与 /tfs/force/pwa 选项一起使用,以便向 Project Server 重新注册Azure DevOps Server。 可在此处详细了解Azure DevOps Server与 Project Server 的集成。