将 Microsoft Azure SQL 数据库迁移到 Amazon Aurora MySQL 兼容版
在迁移 Microsoft Azure SQL 数据库时,通常需要使用数据库工具从 Azure SQL 数据库中提取数据,针对目标数据库进行必要的架构更改,然后将数据导入目标数据库。这一般会涉及到手动步骤,并且源应用程序需要停机较长的时间。如果有一种方法可以快速安全地从 Azure SQL 迁移到 Amazon Aurora MySQL 兼容版,同时最大限度地减少应用程序停机时间和用户干预工作,那会怎么样?本博文介绍了如何快速、安全地自动从 Microsoft Azure SQL 数据库迁移到 Amazon Aurora MySQL 兼容版,并最大限度地减少依赖 Microsoft Azure SQL 数据库的应用程序的停机时间。在下文中,我们假设您现有一个 Microsoft Azure SQL 数据库,需要将其迁移到 Amazon Aurora MySQL 兼容版。您将需要对 Azure SQL 数据库的管理员访问权限,以及连接信息、用户名和密码。您还需要修改 Azure SQL 数据库防火墙,以允许来自 AWS Database Migration Service(AWS DMS)和托管 AWS Schema Conversion Tool(AWS SCT)的 Amazon Elastic Compute Cloud(Amazon EC2)实例的访问。对于目标数据库,我们将使用 Amazon Aurora MySQL 兼容版。
我们为 AWS SCT 部署使用 Amazon EC2 Windows 实例。 SCT 可以本地安装在任何 Windows 或常用的 Linux 平台上。
我们将要使用的数据集是示例数据集,可在创建 Azure SQL 数据库时选择(SalesLT)。下图 1 说明了用于迁移的 Azure/AWS 服务。
图 1.使用的 Azure/AWS 服务
架构转换
在异构数据库迁移中,转换数据库架构和代码对象通常是最耗时的操作。AWS SCT 是一款易用的应用程序,您可以将其安装在本地部署服务器、本地笔记本电脑/台式机或 Amazon EC2 实例上。SCT 可检查源数据库架构,并自动将大多数数据库代码对象(包括视图、存储过程和函数)转换为与目标数据库兼容的格式,帮助简化异构数据库迁移。SCT 无法自动转换的任何对象都将标有详细信息,可供您用来手动转换对象。
数据迁移
完成架构转换后,您需要移动数据本身。对于生产数据库,您可能无法承受迁移期间的任何停机时间。要实现接近于零的迁移停机时间,您可能需要在将应用程序切换到新的目标数据库之前,确保源数据库和目标数据库同步。
AWS Database Migration Service(AWS DMS)可帮助您轻松安全地将数据从源数据库迁移到目标数据库。AWS DMS 支持在使用最广泛的商业与开源数据库之间进行往返数据迁移。在我们的示例中,源数据库位于 Azure SQL 中,目标数据库将托管在 Aurora MySQL 兼容版上。此外,源数据库在迁移期间保持完全正常运行,从而最大限度地减少依赖该数据库的应用程序的停机时间。
迁移过程
将 Azure SQL 数据库迁移到 Aurora MySQL 兼容数据库包括以下步骤:
创建 Amazon Aurora MySQL 兼容集群
创建用于安装 AWS SCT 的 AWS EC2 实例
将 AWS SCT 连接到 Azure SQL 数据库并导入架构
将 Azure SQL 数据库架构转换为 MySQL 架构
创建 AWS DMS 复制实例
定义 AWS DMS 终端节点
创建 AWS DMS 迁移任务
步骤 1:创建 Amazon Aurora MySQL 兼容集群
如果您已经拥有要用作迁移目标的 Aurora MySQL 集群,即可直接使用。如果您要创建新 Aurora MySQL 集群,请参阅创建 Amazon Aurora 数据库集群中的详细说明。
步骤 2:创建用于安装 AWS Schema Conversation Tool(AWS SCT)的 AWS EC2 实例
创建 EC2 实例时,请选择 t3.medium 实例类型以及 Windows Server 2016 或更高版本作为操作系统。有关如何创建 EC2 实例的介绍,请参阅 Amazon Elastic Compute Cloud Windows 实例用户指南。
有关如何安装 AWS SCT 的信息,请参阅安装、验证和更新 AWS SCT。
步骤 3:将 AWS SCT 连接到 Azure SQL 数据库并导入架构
打开 SCT 控制台,然后选择 File, New project wizard(文件,新建项目向导),如图 2 所示。
图 2.打开新的架构转换项目
创建一个新数据库迁移项目,如图 3 所示。
图 3.创建新的数据库迁移项目
在 Project Name(项目名称)字段中键入所需的项目名称。
如果尚未选择,请为 Source Engine(源引擎)选择 Azure SQL Database(Azure SQL 数据库)。
选择 Next(下一步),按照图 4 填写 Azure SQL 数据库连接详细信息。
图 4.连接到源数据库
选择 Test Connection(测试连接),如果测试成功,则将以蓝色突出显示 Next(下一步)按钮。选择 Next(下一步)。如果测试未成功,请解决所有错误,然后重新选择 Test Connection(测试连接)。
注意:请记住将 AWS EC2 实例公有 IP 添加到 Azure SQL 数据库防火墙中,如下图 5 所示。
图 5.配置 AzureDB 防火墙以允许访问
系统将确认数据库,如图 6 所示。
图 6.成功连接到源数据库
选择 Next(下一步),SCT 将运行数据库迁移评估。评估将提供有关不同数据库引擎之间迁移模式复杂程度的详细信息,如下图 7 所示。
图 7.SCT 评估报告
选择 Next(下一步),然后键入 Aurora MySQL 兼容数据库的以下详细信息:
选中 Store Password(存储密码)复选框将密码存储在 SCT 中,如图 8 所示。
图 8.连接到目标数据库
现在您已经创建了新的数据库迁移项目,下一步是将源数据库的 Azure SQL 数据库架构转换为 Amazon Aurora(MySQL)架构。
选择 View(视图)按钮,然后选择 Assessment Report(评估报告)视图,如图 9 所示。
图 9.数据库迁移评估报告
此时将显示架构迁移的摘要。选择 Action Items(操作项)选项卡以查看各个项,如图 10 所示。
图 10.操作项的摘要视图
展开各行以查看建议的 SQL 更改,如图 11 所示。SQL 代码可以编辑,以便根据需要进行更新。
图 11.每个操作项的详细视图
图 11 图例:
绿色 – 自动转换
蓝色 – 需要调查和手动转换
步骤 4:将数据库架构转换为 MySQL 架构
选择源数据库(SalesLT),如下图 12 所示,右键单击并选择 Convert Schema(转换架构)。如果您收到消息 These objects might already exist in the target database.Replace?(目标数据库中可能已存在这些对象。是否替换?),选择 Yes(是)。
图 12.转换源数据库
选择目标数据库(testdb_SalesLT),如下图 13 所示,右键单击并选择 Apply to database(应用到数据库)。如果您收到消息 You chose to apply the schema definition for testdb_SalesLT.Are you sure?(您已选择为 testdb_SalesLT 应用架构定义。是否确定),选择 Yes(是)。
图 13.将转换应用到目标数据库
在此阶段,架构现已应用到目标数据库。展开右侧菜单(Target(目标)),现在可以看到转换后的架构。
步骤 5:创建 AWS DMS 复制实例导航到 AWS 管理控制台,登录您的 AWS 账户,然后在搜索栏中输入 Database Migration Service。选择 Database Migration Service 结果,然后系统会将您转到 AWS DMS 页面(参见下图 14),在该页面中,您将选择 Create replication instance(创建复制实例),然后以下表中的信息作为指导完成设置:
完成配置后(如图 14 所示),选择 CREATE(创建)按钮。
图 14.创建复制实例
注释:创建复制实例后,将安全组从 Default(原定设置)更改为所需的安全组。对于测试用途,可以将其保留为 Default(原定设置)。
将 DMS 实例公有 IP 添加到 Azure SQL 数据库防火墙以允许访问。
步骤 6:定义 AWS DMS 终端节点登录 AWS 管理控制台后,导航到 AWS DMS 并选择 Endpoints(终端节点),然后创建以下源终端节点:
请确保将以上加粗斜体示例值替换为与您的具体 AzureSQL 数据库关联的值。
图 15.使用 AzureSQL 连接详细信息创建源终端节点
创建配置后,如图 15 所示,展开 Test endpoint connection (optional)(测试终端节点连接(可选))。选择 VPC 和复制实例,然后选择 RUN TEST(运行测试),如图 16 所示。
请确保将以上加粗斜体示例值替换为与您的具体 VPC 和复制实例关联的值。
图 16.测试与源终端节点的连接
终端节点连接测试成功后,选择图 15 中的 CREATE ENDPOINT(创建终端节点)按钮。
登录 AWS 管理控制台后,导航到 AWS DMS,选择 Endpoint(终端节点),然后创建以下目标终端节点:
请确保将以上加粗斜体示例值替换为与您的具体 Amazon Aurora MySQL 兼容数据库关联的值。
图 17.使用 Amazon Aurora MySQL 兼容连接详细信息创建目标终端节点
创建图 17 中的配置后,展开 Test endpoint connection (optional)(测试终端节点连接(可选))。选择 VPC 和复制实例,然后选择 RUN TEST(运行测试),如图 16 所示。
请确保将以上加粗斜体示例值替换为与您的具体 VPC 和复制实例关联的值。
终端节点连接测试成功后,选择图 17 中的 CREATE ENDPOINT(创建终端节点)按钮。
步骤 7:创建 AWS DMS 迁移任务
登录到 AWS 管理控制台后,导航到 Database Migration Task(数据库迁移任务)并选择 CREATE TASK(创建任务)以创建以下任务,如图 18 所示。
图 18.创建 Database Migration Service
通过更新 Table Mappings(表映射)部分来完成 Database Migration Service 配置,如图 19 所示。
图 19.在 AWS Database Migration Service 中创建源/目标表映射
选择 CREATE TASK(创建任务)。
创建任务后,Azure SQL 数据库的迁移将自动开始,控制台中会显示迁移进度,如图 20 所示。选择 Identifier(标识符)并选择 Table statistics(表统计信息)选项块以查看各个表的迁移统计信息,如图 21 所示。
图 20.数据迁移状态
图 21.表迁移统计信息
此时,属于指定架构的所有表及其数据都已从 Azure SQL 数据库传输到 Amazon Aurora MySQL 兼容数据库中。您可以使用自己喜欢的 MySQL 客户端(例如 MySQL Workbench)验证是否传输了所有数据。
结论
在这篇博文中,我们演示了如何使用 AWS Schema Conversion Tool 和 AWS Data Migration Service,将数据库架构和数据从 AzureSQL 迁移到 Amazon Aurora MySQL 兼容数据库。试试吧!
本篇作者
Ravin Mathoora
Ravin Mathoora 是 AWS 的解决方案架构师。他与客户合作,以可持续性为指导设计原则,迁移工作负载并实现现代化改造。
Mark Brealey
Mark Brealey 是一名迁移解决方案高级架构师,为欧洲、中东和非洲区域的 AWS 合作伙伴提供帮助。他与 AWS 客户合作,在云上设计可扩展、安全、高性能且可靠的架构。
面向 DirveSignup,可使用链接:Babelfish&Aurora Serverless v2 workshop(需微调)
评论