将可用性组迁移到 Azure VM 上的 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 文档。
先决条件
在开始学习本教程之前,应完成以下先决条件:
- Azure 订阅。 如有必要,请创建一个免费帐户。
- 安装 Azure PowerShell
Az
模块。 - 从 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。 |
若要检查是否具有适当的权限,请执行以下步骤:
- 在 Azure 门户中打开订阅,然后选择“访问控制(IAM)”。
- 在“检查访问权限”中,找到相关帐户并选择它以查看权限。
- 你应该拥有“参与者”或“所有者”权限。
- 如果你刚刚创建了免费的 Azure 帐户,那么你就是订阅的所有者。
- 如果你不是订阅所有者,请让所有者分配该角色。
如果需要分配权限,请按照准备 Azure 用户帐户中的步骤进行操作。
准备迁移
若要为服务器迁移做准备,验证物理服务器设置,并做好准备来部署复制设备。
检查计算机要求
请确保源计算机符合迁移到 Azure 的要求。 请按照以下步骤操作:
- 验证服务器要求。
- 验证复制到 Azure 的源计算机是否符合 Azure VM 要求。
- 某些 Windows 源需要进行一些其他更改。 在进行这些更改之前迁移源会阻止 VM 在 Azure 中启动。 对于某些操作系统,Azure Migrate 可自动做出这些更改。
为复制做准备
“Azure Migrate:Azure Migrate 使用复制设备将计算机复制到 Azure。 复制设备运行以下组件:
- 配置服务器:配置服务器在本地和 Azure 之间协调通信并管理数据复制。
- 进程服务器:进程服务器充当复制网关。 它接收复制数据,通过缓存、压缩和加密对其进行优化,然后将其发送到 Azure 中的缓存存储帐户。
为设备部署做好准备,如下所述:
- 创建一台用于托管复制设备的 Windows Server 2016 计算机。 查看计算机要求。
- 复制设备使用 MySQL。 查看在设备上安装 MySQL 的选项。
- 查看复制设备访问公有云和政府云时所需的 Azure URL。
- 查看复制设备的端口访问要求。
注意
复制设备不应安装在要复制或迁移的源计算机上,也不应安装在以前可能已安装 Azure Migrate 发现和评估设备的计算机上。
下载复制设备安装程序
若要下载复制设备安装程序,请执行以下步骤:
在 Azure Migrate 项目中选择“服务器”,在“Azure Migrate: 服务器迁移”中选择“发现”。
在“发现计算机”>“计算机是否已虚拟化?”中,选择“物理或其他(AWS、GCP 和 Xen 等)” 。
在“目标区域”中,选择要将计算机迁移到的 Azure 区域。
选择“确认迁移的目标区域为 <区域名称>”。
选择“创建资源”。 随即会在后台创建一个 Azure Site Recovery 保管库。
- 如果已使用 Azure Migrate 的服务器迁移工具设置迁移,则由于已设置资源,因此无法配置目标选项。
- 选择此按钮后,无法更改此项目的目标区域。
- 所有后续迁移的目标都是此区域。
在“是否安装新的复制设备?”中,选择“安装复制设备”。
在“下载并安装复制设备软件”中,下载设备安装程序和注册密钥。 需要使用该密钥来注册设备。 下载的密钥有效期为 5 天。
将设备安装程序文件和密钥文件复制到为该设备创建的 Windows Server 2016 计算机。
安装完成后,设备配置向导将自动启动(也可使用在设备计算机的桌面上创建的 cspsconfigtool 快捷方式手动启动该向导)。 使用向导的“管理帐户”选项卡创建具有以下详细信息的虚拟帐户:
- “guest”作为易记名称
- “username”作为用户名
- “password”作为帐户密码。
你需要在“启用复制”阶段使用此虚拟帐户。
设备已安装并重启后,在“发现计算机”中的“选择配置服务器”内选择新设备,然后选择“完成注册”。 “完成注册”步骤会执行最终的几个任务来准备复制设备。
安装移动服务
在要迁移的服务器上安装移动服务代理。 复制设备上已提供代理安装程序。 找到适当的安装程序,并在要迁移的每台计算机上安装该代理。
若要安装移动服务,请执行以下步骤:
登录到复制设备。
导航到
%ProgramData%\ASR\home\svsystems\pushinstallsvc\repository
。找到适用于计算机操作系统和版本的安装程序。 查看支持的操作系统。
将安装程序文件复制到要迁移的计算机。
确保已准备好在部署设备时生成的通行短语。
- 将该通行短语存储在计算机上的某个临时文本文件中。
- 可在复制设备上获取通行短语。 在命令行中,运行
C:\ProgramData\ASR\home\svsystems\bin\genpassphrase.exe -v
查看当前的通行短语。 - 不要重新生成通行短语。 否则会中断连接,并需要重新注册复制设备。
- 在
/Platform
参数中,对于 VMware 计算机和物理计算机,均指定VMware
。
连接到计算机并将安装程序文件的内容提取到本地文件夹(例如 c:\temp)。 在管理员命令提示符中运行以下命令:
ren Microsoft-ASR_UA*Windows*release.exe MobilityServiceInstaller.exe MobilityServiceInstaller.exe /q /x:C:\Temp\Extracted cd C:\Temp\Extracted
运行移动服务安装程序:
UnifiedAgent.exe /Role "MS" /Platform "VmWare" /Silent
将代理注册到复制设备:
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 地址,因为它无法被识别为属于网络或群集。
若要创建负载均衡器,请执行以下步骤:
- 填写
Cluster-Config.csv
文件中的列:
列标题 | 说明 |
---|---|
NewIP |
为 CSV 文件的每个资源指定 Azure 虚拟网络(或子网)中的 IP 地址。 |
ServicePort |
指定 CSV 文件中每个资源使用的服务端口。 对于 SQL 群集资源,请使用与 CSV 中的探测端口相同的服务端口值。 对于其他群集角色,使用的默认值为 1433,但你可以继续使用在当前设置中配置的端口号。 |
- 运行
Create-ClusterLoadBalancer.ps1
脚本,使用以下参数创建负载均衡器:
参数 | 类型 | 描述 |
---|---|---|
ConfigFilePath |
必需 | 指定在上一步中填写的 Cluster-Config.csv 文件的路径。 |
ResourceGroupName |
必需 | 指定要在其中创建负载均衡器的资源组的名称。 |
VNetName |
必需 | 指定负载均衡器将关联到的 Azure 虚拟网络的名称。 |
SubnetName |
必需 | 指定负载均衡器将关联到的 Azure 虚拟网络中的子网的名称。 |
VNetResourceGroupName |
必需 | 指定负载均衡器将关联到的 Azure 虚拟网络的资源组的名称。 |
Location |
必需 | 指定应在其中创建负载均衡器的位置。 |
LoadBalancerName |
必需 | 指定要创建的负载均衡器的名称。 |
./Create-ClusterLoadBalancer.ps1 -ConfigFilePath ./cluster-config.csv -ResourceGroupName $resoucegroupname -VNetName $vnetname -subnetName $subnetname -VnetResourceGroupName $vnetresourcegroupname -Location "eastus" -LoadBalancerName $loadbalancername
复制计算机
现在,选择要迁移的 计算机。 最多可以同时复制 10 台计算机。 如果需要复制更多,则可以每批 10 台同时复制它们。
若要复制计算机,请执行以下步骤:
在 Azure Migrate 项目中选择“服务器”,在“Azure Migrate: 服务器迁移”中选择“复制”。
在“复制”>“源设置”>“计算机是否已虚拟化?”中,选择“物理或其他(AWS、GCP 和 Xen 等)”。
在“本地设备”中,选择已设置的 Azure Migrate 设备的名称。
在“进程服务器”中,选择复制设备的名称。
在“来宾凭据”中,选择先前在本文的复制安装程序设置过程中创建的虚拟帐户。 然后选择“下一步: 虚拟机”。
在“虚拟机”中的“从评估中导入迁移设置?”内,保留默认设置“否,我将手动指定迁移设置”。
检查要迁移的每个 VM。 然后选择“下一步: 目标设置”。
在“目标设置”中,选择订阅以及要迁移到的目标区域,并指定迁移之后 Azure VM 所在的资源组。
在“虚拟网络”中,选择迁移之后 Azure VM 要加入到的 Azure VNet/子网。
在“可用性选项”中,选择:
- 可用性区域,将迁移的计算机固定到区域中的特定可用性区域。 使用此选项可跨可用性区域分配形成多节点应用程序层的服务器。 如果选择此选项,则需要在“计算”选项卡中指定用于每个选定计算机的可用性区域。仅当为迁移选择的目标区域支持可用性区域时,此选项才可用。
- 可用性集,将迁移的计算机放入可用性集。 若要使用此选项,所选的目标资源组必须具有一个或多个可用性集。
- 如果不需要为迁移的计算机使用其中任何可用性配置,则选择“无需基础结构冗余”选项。
在“磁盘加密类型”中,选择以下类型:
- 使用平台管理的密钥进行静态加密
- 使用客户管理的密钥进行静态加密
- 通过平台管理的密钥和客户管理的密钥进行双重加密
注意
若要使用 CMK 复制 VM,需要在目标资源组下创建磁盘加密集。 磁盘加密集对象将托管磁盘映射到包含 CMK 的密钥保管库,以用于 SSE。
在“Azure 混合权益”中:
- 如果你不想要应用 Azure 混合权益,请选择“否”。 然后,选择“下一步”。
- 如果你的 Windows Server 计算机享有有效软件保障或 Windows Server 订阅的权益,并且你想要将此权益应用到所要迁移的计算机,请选择“是”。 然后,选择“下一步”。
在“计算”中,查看 VM 名称、大小、OS 磁盘类型和可用性配置(如果在上一步中选定)。 VM 必须符合 Azure 要求。
- VM 大小:如果你正在使用评估建议,则 VM 大小下拉列表会显示建议大小。 否则,Azure Migrate 会根据 Azure 订阅中最接近的匹配项选择大小。 或者,请在“Azure VM 大小”中的手动选择一个大小。
- OS 磁盘:为 VM 指定 OS(启动)磁盘。 OS 磁盘是包含操作系统引导加载程序和安装程序的磁盘。
- 可用性区域:指定要使用的可用性区域。
- 可用性集:指定要使用的可用性集。
在“磁盘”中,指定是否要将 VM 磁盘复制到 Azure,并选择 Azure 中的磁盘类型(标准 SSD/HDD 或高级托管磁盘)。 然后,选择“下一步”。
在“检查并开始复制”中检查设置,然后选择“复制”启动服务器的初始复制。
注意
在复制开始之前,随时可以在“管理”>“复制计算机”中更新复制设置。 开始复制后无法更改设置。
跟踪和监视
按以下顺序执行复制:
- 选择“复制”会启动一个“开始复制”作业。
- “开始复制”作业成功完成后,计算机将开始初始复制到 Azure。
- 初始复制完成后,增量复制将会开始。 对本地磁盘所做的增量更改会定期复制到 Azure 中的副本磁盘。
可以在门户通知中跟踪作业状态。
可以通过选择“Azure Migrate: 服务器迁移”中的“复制服务器”来监视复制状态。
迁移 VM
复制计算机后,即可进行迁移。 若要迁移服务器,请执行以下步骤:
在 Azure Migrate 项目中选择“服务器”>“Azure Migrate: 服务器迁移”,然后选择“复制服务器”。
若要确保已迁移的服务器与源服务器同步,请停止可用性组中每个副本上的 SQL Server 服务,从次要副本开始(在“SQL Server 配置管理器”>“服务”中),同时确保托管 SQL 数据的磁盘处于联机状态。
在“复制计算机”中,选择“服务器名称”>“概述”,确保上次同步的时间戳是在停止服务器上要迁移的 SQL Server 服务之后,再继续执行下一步。 此过程应该只需要几分钟的时间。
在“复制计算机”中,右键单击该 VM >“迁移”。
在“迁移”>“关闭虚拟机并执行计划迁移(不会丢失任何数据)”中,选择“否”>“确定”。
注意
对于物理服务器迁移,不自动支持关闭源计算机。 建议在迁移时段中将应用程序关闭(不要让应用程序接受任何连接),然后启动迁移(服务器需要保持运行,这样,剩余的更改可以在迁移完成前同步)。
随即会针对该 VM 启动一个迁移作业。 在 Azure 通知中跟踪该作业。
该作业完成后,可以从“虚拟机”页查看和管理该 VM。
重新配置群集
迁移 VM 后,重新配置群集。 请按照以下步骤操作:
关闭 Azure 中已迁移的服务器。
将已迁移的计算机添加到负载均衡器的后端池。 导航到“负载均衡器”>“后端池”。
选择后端池,并添加已迁移的计算机。
在 Azure 中启动已迁移的服务器并登录到任何节点。
复制
Cluster-Config.csv
文件并运行将 CSV 作为参数传递的Update-ClusterConfig.ps1
脚本。 这将确保使用新配置更新群集资源,使群集在 Azure 中正常工作。./Update-ClusterConfig.ps1 -ConfigFilePath $filepath
Always On 可用性组处于就绪状态。
完成迁移
- 完成迁移后,右键单击 VM >“停止迁移”。 这样会执行以下操作:
- 停止本地计算机的复制。
- 从 Azure Migrate 的“复制服务器”计数中删除该计算机:服务器迁移。
- 清除计算机的复制状态信息。
- 在已迁移的计算机上安装适用于 Windows 的 Azure VM 代理。
- 执行任何迁移后的应用调整,例如更新数据库连接字符串和 Web 服务器配置。
- 对 Azure 中当前运行的迁移应用程序执行最终的应用程序和迁移验收测试。
- 将流量交接到已迁移的 Azure VM 实例。
- 从本地 VM 清单中删除本地 VM。
- 从本地备份中删除本地 VM。
- 更新所有内部文档,以显示新的位置和 Azure VM 的 IP 地址。
迁移后的最佳做法
- 对于 SQL Server:
- 安装 SQL Server IaaS 代理扩展,以自动执行管理任务。
- 优化 Azure VM 上的 SQL Server 性能。
- 了解 Azure 上的 SQL Server 定价。
- 为增强恢复能力,请采取以下措施:
- 使用 Azure 备份服务备份 Azure VM 以保证数据安全。
- 使用 Site Recovery 将 Azure VM 复制到次要区域以保证工作负荷运行且持续可用。
- 为提高安全性,请采取以下措施:
- 使用 Microsoft Defender for Cloud - 实时管理锁定和限制入站流量访问。
- 使用网络安全组限制流入管理终结点的网络流量。
- 部署Azure 磁盘加密以帮助保护磁盘,并保护数据以防被盗和未经授权的访问。
- 详细了解保护 IaaS 资源并访问 Microsoft Defender for Cloud。
- 对于监视和管理:
- 考虑部署Azure 成本管理以监视资源使用率和支出。