将可用性组迁移到 Azure VM 上的 SQL Server

适用于: Azure 虚拟机上的 SQL Server

本文介绍如何使用 Azure Migrate: 服务器迁移工具将 SQL Server Always On 可用性组迁移到 Azure VM 上的 SQL Server。 使用迁移工具,可以将可用性组中的每个副本迁移到托管 SQL Server、群集元数据、可用性组元数据和其他必要的高可用性组件的 Azure VM。

在本文中,学习如何:

  • 准备 Azure 和源环境以进行迁移。
  • 开始复制服务器。
  • 监视复制。
  • 运行完整的服务器迁移。
  • 重新配置 Always On 可用性组。

本指南使用 Azure Migrate 的基于代理的迁移方法,该方法将任何服务器或虚拟机视为物理服务器。 迁移物理计算机时,“Azure Migrate: 服务器迁移”使用与 Azure Site Recovery 服务中基于代理的灾难恢复功能相同的复制体系结构,并且某些组件共享相同的代码库。 某些内容可能链接到 Site Recovery 文档。

先决条件

在开始学习本教程之前,应完成以下先决条件:

  1. Azure 订阅。 如有必要,请创建一个免费帐户
  2. 安装 Azure PowerShell Az 模块
  3. 从 GitHub 存储库下载 PowerShell 示例脚本

准备 Azure

准备 Azure 以使用服务器迁移工具进行迁移。

任务 详细信息
创建 Azure Migrate 项目 Azure 帐户需要“参与者”或“所有者”权限才能创建新项目
验证 Azure 帐户的权限 Azure 帐户需要拥有 Azure 订阅的参与者或所有者权限、用于注册 Microsoft Entra ID(以前称为 Azure Active Directory)的权限、Azure 订阅上用于创建 Key Vault、创建 VM 以及写入 Azure 托管磁盘的“用户访问管理员”权限。
设置 Azure 虚拟网络 设置 Azure 虚拟网络 (VNet)。 复制到 Azure 时,将创建 Azure VM 并将其加入到在设置迁移时指定的 Azure VNet。

若要检查是否具有适当的权限,请执行以下步骤:

  1. 在 Azure 门户中打开订阅,然后选择“访问控制(IAM)”。
  2. 在“检查访问权限”中,找到相关帐户并选择它以查看权限。
  3. 你应该拥有“参与者”或“所有者”权限。
    • 如果你刚刚创建了免费的 Azure 帐户,那么你就是订阅的所有者。
    • 如果你不是订阅所有者,请让所有者分配该角色。

如果需要分配权限,请按照准备 Azure 用户帐户中的步骤进行操作。

准备迁移

若要为服务器迁移做准备,验证物理服务器设置,并做好准备来部署复制设备。

检查计算机要求

请确保源计算机符合迁移到 Azure 的要求。 请按照以下步骤操作:

  1. 验证服务器要求。
  2. 验证复制到 Azure 的源计算机是否符合 Azure VM 要求
  3. 某些 Windows 源需要进行一些其他更改。 在进行这些更改之前迁移源会阻止 VM 在 Azure 中启动。 对于某些操作系统,Azure Migrate 可自动做出这些更改。

为复制做准备

“Azure Migrate:Azure Migrate 使用复制设备将计算机复制到 Azure。 复制设备运行以下组件:

  • 配置服务器:配置服务器在本地和 Azure 之间协调通信并管理数据复制。
  • 进程服务器:进程服务器充当复制网关。 它接收复制数据,通过缓存、压缩和加密对其进行优化,然后将其发送到 Azure 中的缓存存储帐户。

为设备部署做好准备,如下所述:

  • 创建一台用于托管复制设备的 Windows Server 2016 计算机。 查看计算机要求
  • 复制设备使用 MySQL。 查看在设备上安装 MySQL 的选项
  • 查看复制设备访问公有云政府云时所需的 Azure URL。
  • 查看复制设备的端口访问要求。

注意

复制设备不应安装在要复制或迁移的源计算机上,也不应安装在以前可能已安装 Azure Migrate 发现和评估设备的计算机上。

下载复制设备安装程序

若要下载复制设备安装程序,请执行以下步骤:

  1. 在 Azure Migrate 项目中选择“服务器”,在“Azure Migrate: 服务器迁移”中选择“发现”。

    “发现 VM”选项的屏幕截图。

  2. 在“发现计算机”>“计算机是否已虚拟化?”中,选择“物理或其他(AWS、GCP 和 Xen 等)” 。

  3. 在“目标区域”中,选择要将计算机迁移到的 Azure 区域。

  4. 选择“确认迁移的目标区域为 <区域名称>”。

  5. 选择“创建资源”。 随即会在后台创建一个 Azure Site Recovery 保管库。

    • 如果已使用 Azure Migrate 的服务器迁移工具设置迁移,则由于已设置资源,因此无法配置目标选项。
    • 选择此按钮后,无法更改此项目的目标区域。
    • 所有后续迁移的目标都是此区域。
  6. 在“是否安装新的复制设备?”中,选择“安装复制设备”。

  7. 在“下载并安装复制设备软件”中,下载设备安装程序和注册密钥。 需要使用该密钥来注册设备。 下载的密钥有效期为 5 天。

    下载提供程序的屏幕截图。

  8. 将设备安装程序文件和密钥文件复制到为该设备创建的 Windows Server 2016 计算机。

  9. 安装完成后,设备配置向导将自动启动(也可使用在设备计算机的桌面上创建的 cspsconfigtool 快捷方式手动启动该向导)。 使用向导的“管理帐户”选项卡创建具有以下详细信息的虚拟帐户:

    • “guest”作为易记名称
    • “username”作为用户名
    • “password”作为帐户密码。

    你需要在“启用复制”阶段使用此虚拟帐户。

  10. 设备已安装并重启后,在“发现计算机”中的“选择配置服务器”内选择新设备,然后选择“完成注册”。 “完成注册”步骤会执行最终的几个任务来准备复制设备。

    “完成注册”选项的屏幕截图。

安装移动服务

在要迁移的服务器上安装移动服务代理。 复制设备上已提供代理安装程序。 找到适当的安装程序,并在要迁移的每台计算机上安装该代理。

若要安装移动服务,请执行以下步骤:

  1. 登录到复制设备。

  2. 导航到 %ProgramData%\ASR\home\svsystems\pushinstallsvc\repository

  3. 找到适用于计算机操作系统和版本的安装程序。 查看支持的操作系统

  4. 将安装程序文件复制到要迁移的计算机。

  5. 确保已准备好在部署设备时生成的通行短语。

    • 将该通行短语存储在计算机上的某个临时文本文件中。
    • 可在复制设备上获取通行短语。 在命令行中,运行 C:\ProgramData\ASR\home\svsystems\bin\genpassphrase.exe -v 查看当前的通行短语。
    • 不要重新生成通行短语。 否则会中断连接,并需要重新注册复制设备。
    • /Platform 参数中,对于 VMware 计算机和物理计算机,均指定 VMware
  6. 连接到计算机并将安装程序文件的内容提取到本地文件夹(例如 c:\temp)。 在管理员命令提示符中运行以下命令:

    ren Microsoft-ASR_UA*Windows*release.exe MobilityServiceInstaller.exe
    MobilityServiceInstaller.exe /q /x:C:\Temp\Extracted
    cd C:\Temp\Extracted
    
  7. 运行移动服务安装程序:

    UnifiedAgent.exe /Role "MS" /Platform "VmWare" /Silent
    
  8. 将代理注册到复制设备:

    cd C:\Program Files (x86)\Microsoft Azure Site Recovery\agent
    UnifiedAgentConfigurator.exe  /CSEndPoint <replication appliance IP address> /PassphraseFilePath <Passphrase File Path>
    

安装发现的计算机后,可能需要一些时间才能将其显示在“Azure Migrate:服务器迁移”中。 随着 VM 的发现,“已发现的服务器”计数会不断增大。

显示已发现的服务器的屏幕截图。

准备源计算机

若要准备源计算机,请对群集节点运行 Get-ClusterInfo.ps1 脚本以检索有关群集资源的信息。 该脚本将在 Cluster-Config.csv 文件中输出角色名称、资源名称、IP 和探测端口。

./Get-ClusterInfo.ps1

创建负载均衡器

为了使群集和群集角色正确响应请求,需要 Azure 负载均衡器。 如果没有负载均衡器,其他 VM 将无法访问群集 IP 地址,因为它无法被识别为属于网络或群集。

若要创建负载均衡器,请执行以下步骤:

  1. 填写 Cluster-Config.csv 文件中的列:
列标题 说明
NewIP 为 CSV 文件的每个资源指定 Azure 虚拟网络(或子网)中的 IP 地址。
ServicePort 指定 CSV 文件中每个资源使用的服务端口。 对于 SQL 群集资源,请使用与 CSV 中的探测端口相同的服务端口值。 对于其他群集角色,使用的默认值为 1433,但你可以继续使用在当前设置中配置的端口号。
  1. 运行 Create-ClusterLoadBalancer.ps1 脚本,使用以下参数创建负载均衡器:
参数 类型 描述
ConfigFilePath 必需 指定在上一步中填写的 Cluster-Config.csv 文件的路径。
ResourceGroupName 必需 指定要在其中创建负载均衡器的资源组的名称。
VNetName 必需 指定负载均衡器将关联到的 Azure 虚拟网络的名称。
SubnetName 必需 指定负载均衡器将关联到的 Azure 虚拟网络中的子网的名称。
VNetResourceGroupName 必需 指定负载均衡器将关联到的 Azure 虚拟网络的资源组的名称。
Location 必需 指定应在其中创建负载均衡器的位置。
LoadBalancerName 必需 指定要创建的负载均衡器的名称。
./Create-ClusterLoadBalancer.ps1 -ConfigFilePath ./cluster-config.csv -ResourceGroupName $resourcegroupname -VNetName $vnetname -subnetName $subnetname -VnetResourceGroupName $vnetresourcegroupname -Location "eastus" -LoadBalancerName $loadbalancername

复制计算机

现在,选择要迁移的 计算机。 最多可以同时复制 10 台计算机。 如果需要复制更多,则可以每批 10 台同时复制它们。

若要复制计算机,请执行以下步骤:

  1. 在 Azure Migrate 项目中选择“服务器”,在“Azure Migrate: 服务器迁移”中选择“复制”。

    “Azure Migrate - 服务器”屏幕的屏幕截图,显示在 Azure Migrate:服务器迁移”的“迁移工具”下选择了“复制”按钮。

  2. 在“复制”>“源设置”>“计算机是否已虚拟化?”中,选择“物理或其他(AWS、GCP 和 Xen 等)”。

  3. 在“本地设备”中,选择已设置的 Azure Migrate 设备的名称。

  4. 在“进程服务器”中,选择复制设备的名称。

  5. 在“来宾凭据”中,选择先前在本文的复制安装程序设置过程中创建的虚拟帐户。 然后选择“下一步: 虚拟机”。

    “复制”屏幕中“源设置”选项卡的屏幕截图,其中突出显示了“来宾凭据”字段。

  6. 在“虚拟机”中的“从评估中导入迁移设置?”内,保留默认设置“否,我将手动指定迁移设置”。

  7. 检查要迁移的每个 VM。 然后选择“下一步: 目标设置”。

    选择 VM 选项的屏幕截图。

  8. 在“目标设置”中,选择订阅以及要迁移到的目标区域,并指定迁移之后 Azure VM 所在的资源组。

  9. 在“虚拟网络”中,选择迁移之后 Azure VM 要加入到的 Azure VNet/子网。

  10. 在“可用性选项”中,选择:

    • 可用性区域,将迁移的计算机固定到区域中的特定可用性区域。 使用此选项可跨可用性区域分配形成多节点应用程序层的服务器。 如果选择此选项,则需要在“计算”选项卡中指定用于每个选定计算机的可用性区域。仅当为迁移选择的目标区域支持可用性区域时,此选项才可用。
    • 可用性集,将迁移的计算机放入可用性集。 若要使用此选项,所选的目标资源组必须具有一个或多个可用性集。
    • 如果不需要为迁移的计算机使用其中任何可用性配置,则选择“无需基础结构冗余”选项。
  11. 在“磁盘加密类型”中,选择以下类型:

    • 使用平台管理的密钥进行静态加密
    • 使用客户管理的密钥进行静态加密
    • 通过平台管理的密钥和客户管理的密钥进行双重加密

    注意

    若要使用 CMK 复制 VM,需要在目标资源组下创建磁盘加密集。 磁盘加密集对象将托管磁盘映射到包含 CMK 的密钥保管库,以用于 SSE。

  12. 在“Azure 混合权益”中:

    • 如果你不想要应用 Azure 混合权益,请选择“否”。 然后,选择“下一步”。
    • 如果你的 Windows Server 计算机享有有效软件保障或 Windows Server 订阅的权益,并且你想要将此权益应用到所要迁移的计算机,请选择“是”。 然后,选择“下一步”。

    “目标”设置的屏幕截图。

  13. 在“计算”中,查看 VM 名称、大小、OS 磁盘类型和可用性配置(如果在上一步中选定)。 VM 必须符合 Azure 要求

    • VM 大小:如果你正在使用评估建议,则 VM 大小下拉列表会显示建议大小。 否则,Azure Migrate 会根据 Azure 订阅中最接近的匹配项选择大小。 或者,请在“Azure VM 大小”中的手动选择一个大小。
    • OS 磁盘:为 VM 指定 OS(启动)磁盘。 OS 磁盘是包含操作系统引导加载程序和安装程序的磁盘。
    • 可用性区域:指定要使用的可用性区域。
    • 可用性集:指定要使用的可用性集。

    “计算机”设置的屏幕截图。

  14. 在“磁盘”中,指定是否要将 VM 磁盘复制到 Azure,并选择 Azure 中的磁盘类型(标准 SSD/HDD 或高级托管磁盘)。 然后,选择“下一步”。

    “磁盘”设置的屏幕截图。

  15. 在“检查并开始复制”中检查设置,然后选择“复制”启动服务器的初始复制。

注意

在复制开始之前,随时可以在“管理”>“复制计算机”中更新复制设置。 开始复制后无法更改设置。

跟踪和监视

按以下顺序执行复制:

  • 选择“复制”会启动一个“开始复制”作业。
  • “开始复制”作业成功完成后,计算机将开始初始复制到 Azure。
  • 初始复制完成后,增量复制将会开始。 对本地磁盘所做的增量更改会定期复制到 Azure 中的副本磁盘。

可以在门户通知中跟踪作业状态。

可以通过选择“Azure Migrate: 服务器迁移”中的“复制服务器”来监视复制状态。 显示监视复制的屏幕截图。

迁移 VM

复制计算机后,即可进行迁移。 若要迁移服务器,请执行以下步骤:

  1. 在 Azure Migrate 项目中选择“服务器”>“Azure Migrate: 服务器迁移”,然后选择“复制服务器”。

    “复制服务器”选项的屏幕截图。

  2. 若要确保已迁移的服务器与源服务器同步,请停止可用性组中每个副本上的 SQL Server 服务,从次要副本开始(在“SQL Server 配置管理器”>“服务”中),同时确保托管 SQL 数据的磁盘处于联机状态。

  3. 在“复制计算机”中,选择“服务器名称”>“概述”,确保上次同步的时间戳是在停止服务器上要迁移的 SQL Server 服务之后,再继续执行下一步。 此过程应该只需要几分钟的时间。

  4. 在“复制计算机”中,右键单击该 VM >“迁移”。

  5. 在“迁移”>“关闭虚拟机并执行计划迁移(不会丢失任何数据)”中,选择“否”>“确定”。

    注意

    对于物理服务器迁移,不自动支持关闭源计算机。 建议在迁移时段中将应用程序关闭(不要让应用程序接受任何连接),然后启动迁移(服务器需要保持运行,这样,剩余的更改可以在迁移完成前同步)。

  6. 随即会针对该 VM 启动一个迁移作业。 在 Azure 通知中跟踪该作业。

  7. 该作业完成后,可以从“虚拟机”页查看和管理该 VM。

重新配置群集

迁移 VM 后,重新配置群集。 请按照以下步骤操作:

  1. 关闭 Azure 中已迁移的服务器。

  2. 将已迁移的计算机添加到负载均衡器的后端池。 导航到“负载均衡器”>“后端池”。

  3. 选择后端池,并添加已迁移的计算机。

  4. 在 Azure 中启动已迁移的服务器并登录到任何节点。

  5. 复制 Cluster-Config.csv 文件并运行将 CSV 作为参数传递的 Update-ClusterConfig.ps1 脚本。 这将确保使用新配置更新群集资源,使群集在 Azure 中正常工作。

    ./Update-ClusterConfig.ps1 -ConfigFilePath $filepath
    

Always On 可用性组处于就绪状态。

完成迁移

  1. 完成迁移后,右键单击 VM >“停止迁移”。 这样会执行以下操作:
    • 停止本地计算机的复制。
    • 从 Azure Migrate 的“复制服务器”计数中删除该计算机:服务器迁移。
    • 清除计算机的复制状态信息。
  2. 在已迁移的计算机上安装适用于 Windows 的 Azure VM 代理。
  3. 执行任何迁移后的应用调整,例如更新数据库连接字符串和 Web 服务器配置。
  4. 对 Azure 中当前运行的迁移应用程序执行最终的应用程序和迁移验收测试。
  5. 将流量交接到已迁移的 Azure VM 实例。
  6. 从本地 VM 清单中删除本地 VM。
  7. 从本地备份中删除本地 VM。
  8. 更新所有内部文档,以显示新的位置和 Azure VM 的 IP 地址。

迁移后的最佳做法