蘑菇加速器苹果版
  • 3

将多TB SQL Server 数据库迁移到 Amazon RDS Custom for SQL S

将多TB SQL Server 数据库迁移到 Amazon RDS Custom for SQL Server

关键要点

本文介绍了如何使用 Amazon FSx for Windows File Server 将多TB大小的 SQL Server 数据库迁移到 Amazon RDS Custom for SQL Server。在这个过程中可以避免存储资源过度分配的问题。该解决方案主要适用于数据库实例版本 2019,并推荐在 2022 版本中使用 Amazon S3 进行备份和恢复操作。迁移过程包括备份数据库、将 RDS Custom 实例连接到 Active Directory、以及在 RDS Custom 上恢复备份数据的步骤。

此文为两部分系列的第二部分,讨论如何将多TB数据库迁移到 Amazon Relational Database Services (Amazon RDS) Custom for SQL Server。

RDS Custom for SQL Server 是一款托管的数据库服务,自动化了数据库的设置、操作、备份、高可用性和可扩展性,同时允许访问数据库及其底层操作系统。此特性使数据库管理员能够启用 SQL 通用语言运行时 (CLR) 等原生功能,配置操作系统设置,并在迁移遗留、定制和打包应用程序时安装驱动程序。

常见迁移挑战

RDS Custom for SQL Server 默认的数据驱动器 (D) 支持最高 16 TB 的存储。有关 RDS Custom for SQL Server 存储限制和如何调整存储的信息,请参阅 为 RDS Custom for SQL Server DB 实例修改存储。

在将多TB数据库迁移到 RDS Custom for SQL Server 时,你可能会遇到以下挑战:

数据库大小加上备份文件的大小超过 16 TB,如何进行迁移。如何在迁移多TB数据库时避免存储的过度分配

这些挑战在本系列的第一部分中使用 Amazon Simple Storage Service (Amazon S3) 和 Amazon Elastic Block Store (Amazon EBS) 进行了处理。本文则介绍了使用 Amazon FSx for Windows File Server 的另一种解决方案。

该解决方案主要设计用于托管数据库实例版本 2019 的 RDS Custom for SQL Server。对于托管数据库实例版本 2022 的 RDS Custom,建议使用 Amazon S3。有关详细信息,请查看 与 Amazon S3 集成的原生备份和恢复。

蘑菇加速器苹果版

解决方案概述

以下高层次架构图展示了将多TB数据库迁移到 RDS Custom for SQL Server 的步骤,这里使用了 Amazon FSx File Gateway 和 FSx for Windows File Server 作为 RDS Custom for SQL Server 的中转存储。

FSx for Windows File Server 仅用于托管数据库备份文件,不得托管数据库文件。将数据库文件托管在 FSx for Windows File Server 上将导致 RDS Custom for SQL Server 进入不受支持的配置状态。了解不受支持的 RDS Custom 配置的更多信息,请参见 RDS Custom 支持范围和不受支持的配置。

高层次的工作流程包括以下步骤:

将本地 SQL Server 数据库备份直接到 FSx File Gateway 文件共享。将 RDS Custom for SQL Server 实例附加到 AWS 托管的 Active Directory (AD)。也可以使用自托管的 Active Directory。在 RDS Custom for SQL Server 上恢复备份文件。

先决条件

你需要具备以下先决条件:

将多TB SQL Server 数据库迁移到 Amazon RDS Custom for SQL S理解 SQL Server 的备份与恢复 的基本知识。知道如何 设置、启动并连接到 RDS for Custom SQL Server 实例。已配置 FSx for Windows File Server 和 FSx File Gateway 以适应本解决方案。有关说明,请参考 创建你的下载网关。也可以探索其他数据传输选项,如 AWS DataSync 或 AWS Snow Family。在 FSx File Gateway 上设置的 SMB 文件共享挂载在本地服务器上,用于备份数据库。有关说明,请参见 挂载并使用文件共享。使用 AWS 服务如 Amazon Elastic Compute Cloud (Amazon EC2) 和 AWS Command Line Interface (AWS CLI)。现有的 Active Directory。RDS Custom for SQL Server 可以在 AWS 托管目录或自管理目录中运行。此解决方案中,RDS Custom 使用 AWS Managed Microsoft AD,并将 FSx for Windows File Server 共享附加到 AWS 托管目录。

由于此解决方案涉及 AWS 资源的设置和使用,将会产生费用。请参考 AWS 定价 了解更多信息。强烈建议你在非生产环境中设置此解决方案,并进行端到端验证,在生产环境中实施之前。

将本地 SQL Server 数据库备份到 FSx File Gateway 文件共享

我们将非常大的本地数据库备份到 FSx File Gateway 的 SMB 文件共享中。为了减少生成备份的时间,我们将备份分成多个备份文件:

SampleTestFullBackupCompressed01bakSampleTestFullBackupCompressed02bakSampleTestFullBackupCompressed03bakSampleTestFullBackupCompressed04bak

将 RDS Custom for SQL Server 附加到域

为了使 RDS Custom for SQL Server 能够访问 Amazon FSx 文件共享,RDS Custom EC2 实例必须连接到你已加入 Amazon FSx 文件系统的 Microsoft AD。按照以下步骤将 RDS Custom for SQL Server 加入域:

配置 Amazon Route 53 以支持 DNS 路由

要配置 Amazon Route 53:

登录 Route 53 控制台,确保你在正确的区域。在左边的菜单中,选择 Resolver,然后选择 Outbound endpoints,点击 Create outbound endpoint。

在“创建出站端点”屏幕中输入以下信息:

端点名称 输入你的端点名称。VPC 选择托管你的 RDS Custom 的 VPC。该端点的安全组 选择 RDS Custom 实例的安全组。端点类型 选择 IPv4。该端点的协议 选择 Do53。IP 地址 #1 和 IP 地址 #2 选择 RDS Custom for SQL Server 主机所在的可用区和子网。保持“使用自动选择的 IPv4 地址”选项选中。

选择 Create outbound endpoint可能需要几分钟时间。在左侧菜单中,选择 Resolver,然后选择 Rules,再选择 Create rule。

在“创建规则”屏幕中输入以下信息:

名称 输入规则名称。规则类型 选择 Forward。域名 输入你的域名称。使用此规则的 VPC 选择托管 RDS Custom for SQL Server 的 VPC。出站端点 选择在上一步中创建的端点。目标 IP 地址 输入你的域控制器的 DNS IP 地址。保持端口为 53,同时将传输协议设置为 Do53。

选择 Submit。确保你的 RDS Custom for SQL Server 安全组拥有支持 Route 53 及其他服务或应用程序的必要规则。在我们的设置中,我们向 VPC CIDR 添加了以下出站规则: TCP/UDP 53 DNSTCP/UDP 88 Kerberos 身份验证TCP/UDP 389 LDAPTCP 445 SMBTCP 135 客户端 CIDR 复制 RPC、EPMTCP 4915265535 客户端 CIDR RPC 复制、用户和计算机身份验证、组策略、信任关系

远程桌面连接到实例并将实例加入域

配置完 Route 53 的 DNS 路由后:

远程桌面连接到你的 RDS Custom for SQL Server。有关说明,请参见 使用 RDP 连接到 RDS Custom DB 实例。验证与域的连接。运行 nslookup ltdomainnamegt 确认其指向你的域控制器的两个 IP。

注意:如果 nslookup 无法正确解析,加入域将失败。

通过运行以下 PowerShell 命令将 EC2 实例添加到域中:AddComputer DomainName examplecom Credential examplecomAdmin Restart Force。此命令将提示你输入域凭证密码。

RDS Custom 实例加入域后,建议进行后续检查。运行以下 PowerShell 命令:TestNetConnection ComputerName ssmltawsregiongtamazonawscom Port 443 InformationLevel Detailed。如果命令返回 True,说明 DNS 解析设置正确。如果返回 False,RDS Custom for SQL Server 实例将处于不受支持的状态。

有关如何加入自托管 Active Directory 的说明,请参考使用 自托管 Active Directory 与 Amazon RDS Custom for SQL Server。如果需要将 RDS Custom 实例保留在 Active Directory 中,可以按照 使用 AWS Systems Manager 自动化 Amazon RDS Custom for SQL Server 的配置 的步骤进行操作。

在将 RDS Custom for SQL Server 加入 Active Directory 后,你可以映射 Amazon FSx 文件共享。然而,由于恢复操作将使用文件共享的通用命名约定(UNC)路径,因此映射文件共享并不是必需的。你可以遵循逐步说明,通过 Windows 文件资源管理器或命令提示符在 EC2 Windows 实例上映射文件共享。有关映射文件共享的详细步骤,请参见 在 Amazon EC2 Windows 实例上映射文件共享。

在我们的解决方案中,我们使用类似以下的 PowerShell 命令在 EC2 Windows 实例上映射文件共享:

powershell net use H ltFSx DNS namegtshare /persistentyes

输入你的 Microsoft AD 凭证以进行 Amazon FSx 服务账户的身份验证,如下所示:

在 RDS Custom for SQL Server 上恢复备份文件

在恢复备份文件之前,验证备份文件是否存在于 Amazon FSx 文件共享中。此外,确保 SQL 服务账户对文件共享的权限。可以使用以下代码恢复文件:

sqlUSE [master]GORESTORE DATABASE [SampleTest] FROM DISK = NZSampleTestFullBackupCompressed01bak DISK = NZSampleTestFullBackupCompressed02bak DISK = NZSampleTestFullBackupCompressed03bak DISK = NZSampleTestFullBackupCompressed04bak WITH FILE = 1 MOVE NSampleTestData001 TO NDrdsdbdataDATASampleTestData001mdf MOVE NSampleTestData002 TO NDrdsdbdataDATASampleTestData002ndf MOVE NSampleTestData003 TO NDrdsdbdataDATASampleTestData003ndf MOVE NSampleTestData004 TO NDrdsdbdataDATASampleTestData004ndf MOVE NSampleTestData005 TO NDrdsdbdataDATASampleTestData005ndf MOVE NSampleTestData006 TO NDrdsdbdataDATASampleTestData006ndf MOVE NSampleTestData007 TO NDrdsdbdataDATASampleTestData007ndf MOVE NSampleTestData008 TO NDrdsdbdataDATASampleTestData008ndf MOVE NSampleTestData009 TO NDrdsdbdataDATASampleTestData009ndf MOVE NSampleTestData010 TO NDrdsdbdataDATASampleTestData010ndf MOVE NSampleTestData011 TO NDrdsdbdataDATASampleTestData011ndf MOVE NSampleTestData012 TO NDrdsdbdataDATASampleTestData012ndf MOVE NSampleTestData013 TO NDrdsdbdataDATASampleTestData013ndf MOVE NSampleTestData014 TO NDrdsdbdataDATASampleTestData014ndf MOVE NSampleTestData015 TO NDrdsdbdataDATASampleTestData015ndf MOVE NSampleTestData016 TO NDrdsdbdataDATASampleTestData016ndf