本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将SQL服务器迁移到AWS使用分布式可用性组
由 Praveen Marthala 创作 () AWS
摘要
Microsoft SQL Server Always On 可用性组为SQL服务器提供了高可用性 (HA) 和灾难恢复 (DR) 解决方案。可用性组由一个接受读/写流量的主副本,和最多八个接受读取流量的辅助副本组成。可用性组是在具有两个或更多节点的 Windows Server 故障转移群集 (WSFC) 上配置的。
Microsoft SQL Server Always On 分布式可用性组提供了一种在两个独立可用性组之间配置两个独立可用性组的解决方案WFSCs。属于分布式可用性组的可用性组不必位于同一数据中心。一个可用性组可以位于本地,另一个可用性组可以位于不同域的亚马逊云服务 (AWS) 云上的亚马逊弹性计算云 (AmazonEC2) 实例上。
此模式概述了使用分布式可用性组将属于现有可用性组的本地SQL服务器数据库迁移到在 Amazon 上设置可用组的SQL服务器的步骤EC2。通过遵循这种模式,您可以将数据库迁移到AWS云端,同时最大限度地减少转换期间的停机时间。切换后,数据库AWS立即处于高度可用状态。您也可以使用此模式将底层操作系统从本地更改为AWS保持相同版本的 SQL Server。
先决条件和限制
先决条件
一个活跃的AWS账户
AWS直连 Connect 或 AWS Site-to-Site VPN
本地和两个节点上安装了相同版本的 SQL Server AWS
产品版本
SQL服务器版本 2016 及更高版本
SQL服务器企业版
架构
源技术堆栈
本地带有 “始终开启” 可用性组的 Microsoft SQL 服务器数据库
目标技术堆栈
AWS云端亚马逊EC2上具有 Always On 可用性组的 Microsoft SQL 服务器数据库
迁移架构
术语
WSFC1 — WSFC 在本地部署
WSFC2 — WSFC 在AWS云上
AG 1 — 第一个可用性组,位于 WSFC 1
AG 2 — 第二个可用性组,位于 WSFC 2
SQL服务器主副本 — AG 1 中被视为所有写入操作的全局主节点
SQL服务器转发器 — AG 2 中从SQL服务器主副本异步接收数据的节点
SQL服务器辅助副本 — AG 1 或 AG 2 中同步接收来自主副本或转发器的数据的节点
工具
AWSDirect Conn ect — AWS Direct Connect 通过标准的以太网光纤电缆将您的内部网络连接到 AWS Direct Connect 位置。通过此连接,您可以直接创建通往公共AWS服务的虚拟接口,绕过网络路径中的互联网服务提供商。
亚马逊 EC2 — 亚马逊弹性计算云 (AmazonEC2) 在AWS云中提供可扩展的计算容量。您可以根据需要使用 Amazon EC2 启动任意数量或数量的虚拟服务器,也可以进行横向扩展或扩展。
AWS Site-to-SiteVPN— AWS Site-to-Site VPN 支持创建 site-to-site虚拟专用网络 (VPN)。您可以将配置VPN为在启动的实例AWS和您自己的远程网络之间传递流量。
微软SQL服务器管理工作室
— 微软SQL服务器管理工作室 (SSMS) 是一个用于管理SQL服务器基础架构的集成环境。它提供了一个用户界面和一组工具,其中包含与 SQL Server 交互的丰富脚本编辑器。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
创建一个 WSFC onAWS. | 在 Amazon 上创建 WSFC 2 个带有两个节点的 HA EC2 实例。您将使用此故障转移群集在上创建第二个可用性组 (AG 2) AWS。 | 系统管理员、 SysOps 管理员 |
在 WSFC 2 上创建第二个可用性组。 | 使用SSMS,在 2 中的两个节点上创建 AG WSFC 2。WSFC2 中的第一个节点将充当转发器。WSFC2 中的第二个节点将作为 AG 2 的辅助副本。 在此阶段,AG 2 中没有可用数据库。其为设置分布式可用性组的起点。 | DBA,开发者 |
在 AG 2 上创建无恢复选项的数据库。 | 备份本地可用性组 (AG 1) 数据库。 在没有恢复选项的情况下,将数据库还原至 AG 2 的转发器和辅助副本。还原数据库时,请指定足够磁盘空间,以存放数据库数据文件和日志文件。 在该阶段,数据库处于还原状态。它们不是 AG 2 或分布式可用性组的一部分,也非同步。 | DBA,开发者 |
任务 | 描述 | 所需技能 |
---|---|---|
在 AG 1 上创建分布式可用性组。 | 要在 AG 1 上创建分布式可用性组,请使用带
| DBA,开发者 |
在 AG 2 上创建分布式可用性组。 | 要在 AG 2 上创建分布式可用性组,请通过
分布式可用性组在 AG 1 和 AG 2 间创建。 AG 2 中的数据库尚未配置为:参与从 AG 1 到 AG 2 的数据流。 | DBA,开发者 |
将数据库添加至 AG 2 上的转发器和辅助副本。 | 在 AG 2 的转发器和辅助副本中使用 这将启动 AG 1 和 AG 2 上的数据库间的异步数据流。 全局主服务器接受写入,将数据同步发送至 AG 1 上的辅助副本,并异步向 AG 2 上的转发器发送数据。AG 2 上的转发器将数据同步发送至 AG 2 上的辅助副本。 | DBA,开发者 |
任务 | 描述 | 所需技能 |
---|---|---|
使用DMVs和SQL服务器日志。 | 使用动态管理视图 (DMVs) 和SQL服务器日志监控两个可用性组之间数据流的状态。 DMVs值得监视的内容包括 要了解代发器同步的状态,请在代发器的SQL服务器日志中监控同步状态。 | DBA,开发者 |
任务 | 描述 | 所需技能 |
---|---|---|
停止所有流向主副本流量。 | 在 AG 1 中阻止主副本传入流量,这样数据库上就不会发生写入活动,数据库就可以迁移了。 | 应用程序所有者、开发人员 |
更改 AG 1 上的分布式可用性组的可用性模式。 | 在主副本上,将分布式可用性组可用性模式设置为同步。 将可用性模式更改为同步模式后,数据将从 AG 1 主副本同步发送至 AG 2 中的转发器。 | DBA,开发者 |
LSNs在两个可用性组中选中。 | 检查 AG 1 和 AG 2 中的最后一个日志序列号 (LSNs)。由于 AG 1 的主副本中没有发生写入操作,因此数据已同步,两个可用性组的最后一次LSNs数据应匹配。 | DBA,开发者 |
将 AG 1 更新至辅助角色。 | 当您将 AG 1 更新至辅助角色时,AG 1 将失去主副本角色并且不接受写入,两个可用性组之间的数据流将停止。 | DBA,开发者 |
任务 | 描述 | 所需技能 |
---|---|---|
手动故障转移至 AG 2。 | 在 AG 2 的转发器,更改分布式可用性组以允许数据丢失。由于您已经检查并确认 AG 1 和 AG 2 LSNs 上的最后一个匹配,因此数据丢失不是问题。 当您允许 AG 2 中转发器的数据丢失时,AG 1 和 AG 2 的角色会发生变化:
| DBA,开发者 |
更改 AG 2 上的分布式可用性组的可用性模式。 | 在 AG 2 主副本上,将可用性模式更改为异步。 这会将数据从 AG 2 移动至 AG 1、从同步移动更改为异步移动。此步骤是为了避免 AG 2 和 AG 1 间的网络延迟(如有),并且不会影响数据库的性能。 | DBA,开发者 |
开始向新主副本发送流量。 | 更新连接字符串以使用 AG 2 上的侦听器URL端点向数据库发送流量。 AG 2 现在接受写入并向 AG 1 中转发器发送数据,同时在 AG 2 中将数据发送到自己的辅助副本。数据从 AG 2 异步移动至 AG 1。 | 应用程序所有者、开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
在 AG 2 上删除分布式可用性组。 | 在计划时间内监控迁移情况。在 AG 2 上删除分布式可用性组,以删除 AG 2 和 AG 1 之间的分布式可用性组设置。这将删除分布式可用性组配置,从 AG 2 至 AG 1 的数据流将停止。 此时,AG 2 的可用性很高AWS,主副本需要写入,辅助副本位于同一个可用性组中。 | DBA,开发者 |
停用本地服务器。 | 停用 WSFC 1 中属于 AG 1 的本地服务器。 | 系统管理员、 SysOps 管理员 |