教程:通过 Azure 门户使用 DMS 将 Azure Database for MySQL 单一服务器脱机迁移到灵活服务器

可以使用 Azure 数据库迁移服务 (DMS) 将 Azure Database for MySQL 单一服务器实例迁移到 Azure Database for MySQL 灵活服务器。DMS 是一个完全托管的服务,旨在实现从多个数据库源到 Azure 数据平台的无缝迁移。 在本教程中,我们将使用 DMS 迁移活动将示例数据库从 Azure Database for MySQL 单一服务器脱机迁移到 MySQL 灵活服务器(两者均运行版本 5.7)。

DMS 支持从较低版本的 MySQL 服务器(v5.6 和更高)迁移到更高版本。 此外,DMS 支持跨区域、跨资源组和跨订阅迁移,因此可以为目标服务器选择不同于为源服务器指定的区域、资源组和订阅。

重要

要进行联机迁移,可将 DMS 支持的“启用事务一致性”功能与数据传入复制复制更改结合使用。 此外,可以按照此教程使用联机迁移方案进行迁移。

本教程介绍以下操作:

  • 实施有关创建灵活服务器的最佳做法,以使用 DMS 更快地加载数据。
  • 创建和配置目标灵活服务器。
  • 创建 DMS 实例。
  • 在 DMS 中创建 MySQL 迁移项目。
  • 使用 DMS 迁移 MySQL 架构。
  • 运行迁移。
  • 监视迁移。
  • 执行迁移后步骤。
  • 实施有关执行迁移的最佳做法。

先决条件

要完成本教程,需要:

  • 创建或使用 Azure Database for MySQL 单一服务器(源服务器)的现有实例。

  • 若要成功完成架构迁移,执行迁移的用户需要在源服务器上拥有以下特权:

限制

在准备迁移时,请务必考虑以下限制。

  • 迁移非表对象时,DMS 不支持重命名数据库。

  • 迁移到启用了 bin_log 的目标服务器时,请务必启用 log_bin_trust_function_creators 以允许创建例程和触发器。

  • 迁移架构时,DMS 不支持在目标服务器上创建数据库。

  • 目前,DMS 不支持迁移对象的 DEFINER 子句。 源上具有定义器的所有对象类型都将被删除,迁移后,表的默认定义器将设置为用于运行迁移的登录名。

  • 目前,DMS 仅支持在移动数据的过程中迁移架构。 如果未为数据移动选择任何内容,则不会发生架构迁移。 选择一个表进行架构迁移也会选择该表进行数据移动。

有关创建灵活服务器以使用 DMS 更快地加载数据的最佳做法

DMS 支持跨区域、跨资源组和跨订阅迁移,因此你可以自由选择适合目标灵活服务器的区域、资源组和订阅。 在创建目标灵活服务器之前,请考虑参考以下配置指导来帮助确保使用 DMS 更快地加载数据。

  • 按照下表中的详细信息根据源单服务器的定价层和 VCore 数为目标灵活服务器选择计算大小和计算层。

    单一服务器定价层 单一服务器 VCore 数 灵活服务器计算大小 灵活服务器计算层
    基本 1 1 常规用途 Standard_D16ds_v4
    基本 1 2 常规用途 Standard_D16ds_v4
    常规用途 1 4 常规用途 Standard_D16ds_v4
    常规用途 1 8 常规用途 Standard_D16ds_v4
    常规用途 16 常规用途 Standard_D16ds_v4
    常规用途 32 常规用途 Standard_D32ds_v4
    常规用途 64 常规用途 Standard_D64ds_v4
    内存优化 4 业务关键 Standard_E4ds_v4
    内存优化 8 业务关键 Standard_E8ds_v4
    内存优化 16 业务关键 Standard_E16ds_v4
    内存优化 32 业务关键 Standard_E32ds_v4

    1 对于迁移,请为目标灵活服务器选择“常规用途 16 VCore 计算”以加快迁移速度。 迁移完成后,按照本文稍后的“执行迁移后活动”部分所述的计算大小建议,缩减到目标服务器的所需计算大小。

  • 目标灵活服务器的 MySQL 版本必须高于或等于源单一服务器的版本。

  • 除非需要在特定区域中部署目标灵活服务器,否则将“可用性区域”参数的值设置为“无首选项”。

  • 对于网络连接,如果为源单一服务器配置了专用终结点或专用链接,请在“网络”选项卡上选择“专用访问”;否则请选择“公共访问”。

  • 将源单一服务器中的所有防火墙规则复制到目标灵活服务器。

  • 在创建过程中将单一服务器中的所有名称/值标记复制到灵活服务器。

创建和配置目标灵活服务器

在记住这些最佳做法的前提下创建目标灵活服务器,然后对其进行配置。

  • 创建目标灵活服务器。 有关指导步骤,请参阅快速入门快速入门:使用 Azure 门户创建 Azure Database for MySQL 的实例

  • 接下来若要配置新建的目标灵活服务器,请执行以下操作:

    • 执行迁移的用户需要具有以下权限:
      • 若要在目标上创建表,用户必须拥有“CREATE”特权。
      • 如果要迁移到使用“UNION”选项的表,用户必须对映射到 MERGE 表的表拥有“SELECT”、“UPDATE”和“DELETE”特权。
      • 如果要迁移视图,必须拥有“CREATE VIEW”特权。 请记住,根据视图的内容,可能需要某些特权。 有关详细信息,请参阅有关“CREATE VIEW 语句”的特定于所用版本的 MySQL 文档
      • 如果要迁移事件,用户必须拥有“EVENT”特权。
      • 如果要迁移触发器,用户必须拥有“TRIGGER”特权。
      • 如果要迁移例程,用户必须拥有“CREATE ROUTINE”特权。
    • 创建目标数据库,不过不需要在其中填充表/视图等。
      • 在开始迁移之前设置适当的字符、排序规则和任何其他适用的架构设置,因为这可能会影响某些对象定义中的 DEFAULT 设置。
      • 此外,如果迁移非表对象,请确保为目标架构使用与源中相同的名称。
    • 按如下所示在目标灵活服务器上配置服务器参数:
      • 设置 TLS 版本和 require_secure_transport 服务器参数以匹配源服务器上的值。
      • 将 sql_mode 服务器参数设置为与源服务器上的值匹配。
      • 在目标服务器上配置服务器参数以匹配源服务器上使用的任何非默认值。
      • 为确保在使用 DMS 时更快地加载数据,请按照说明配置以下服务器参数。
        • max_allowed_packet - 设置为 1073741824(即 1 GB),以防止由于行太大而出现任何连接问题。
        • slow_query_log – 设置为“关闭”以关闭慢速查询日志。 这将消除数据加载过程中由慢速查询日志记录导致的开销。
        • innodb_buffer_pool_size - 只能通过纵向扩展 Azure Database for MySQL 服务器的计算来增大。 在迁移期间从门户的定价层纵向扩展服务器到 64 vCore 常规用途 SKU,以增大 innodb_buffer_pool_size。
        • innodb_io_capacity 和 innodb_io_capacity_max - 从 Azure 门户中的服务器参数更改为 9000,以提高 IO 利用率,从而优化迁移速度。
        • innodb_write_io_threads - 从 Azure 门户中的服务器参数更改为 4 以加快迁移速度。
    • 在目标服务器上配置副本以匹配源服务器上的副本。
    • 将以下服务器管理功能从源单一服务器复制到目标灵活服务器:
      • 角色分配、角色、拒绝分配、经典管理员、访问控制 (IAM)
      • 锁(只读和删除)
      • 警报
      • 任务
      • 资源运行状况警报

设置 DMS

部署并配置目标灵活服务器后,接下来需要设置 DMS 以将单一服务器迁移到灵活服务器。

注册资源提供程序

若要注册 Microsoft.DataMigration 资源提供程序,请执行以下步骤。

  1. 在创建第一个 DMS 实例之前,请登录到 Azure 门户,然后搜索并选择“订阅”。

    Azure 市场的屏幕截图。

  2. 选择用于创建 DMS 实例的订阅,然后选择“资源提供程序”。

    选择“资源提供程序”的屏幕截图。

  3. 搜索“Migration”一词,然后选择与“Microsoft.DataMigration”对应的“注册”。

    选择“注册”的屏幕截图。

创建数据库迁移服务 (DMS) 实例

  1. 在 Azure 门户中选择“+ 创建资源”,搜索“Azure 数据库迁移服务”一词,然后从下拉列表中选择“Azure 数据库迁移服务”

    搜索“Azure 数据库迁移服务”的屏幕截图。

  2. 在“Azure 数据库迁移服务”屏幕上,选择“创建” 。

    创建 Azure 数据库迁移服务实例的屏幕截图。

  3. 在“选择迁移方案和数据库迁移服务”页上的“迁移方案”下,选择“Azure Database for MySQL 灵活服务器”作为源服务器类型,选择“Azure Database for MySQL”作为目标服务器类型,然后选择“选择”。

    选择“迁移方案”的屏幕截图。

  4. 在“创建迁移服务”页上的“基本信息”选项卡中,在“项目详细信息”下选择适当的订阅,然后选择现有的资源组或创建一个新资源组。

  5. 在“实例详细信息”下指定服务名称,选择一个区域,然后确认已选择“Azure”作为服务模式。

  6. 在“定价层”的右侧,选择“配置层”。

    选择“配置层”的屏幕截图。

  7. 在“配置”页上,为 DMS 实例选择包含 4 个 vCore 的“高级”定价层,然后选择“应用”。

    DMS 高级 4-vCore 在 6 个月(183 天,从 DMS 服务创建日期算起,到产生费用之日为止)内免费。 有关 DMS 成本和定价层的详细信息,请参阅定价页

    选择定价层的屏幕截图。

    接下来,需要指定要为 DMS 实例提供的、能够访问源单一服务器和目标灵活服务器的 VNet。

  8. 在“创建迁移服务”页上,选择“下一步: 网络 >>”。

  9. 在“网络”选项卡上,从列表中选择现有 VNet,或提供要创建的新 VNet 的名称,然后选择“查看 + 创建”。

    有关详细信息,请参阅使用 Azure 门户创建虚拟网络一文。

    选择“网络”的屏幕截图。

    必须将 VNet 配置为能够访问源单一服务器和目标灵活服务器,因此请务必执行以下操作:

    • 为源和目标 Azure Database for MySQL 服务器创建服务器级防火墙规则或配置 VNET 服务终结点,以允许 Azure 数据库迁移服务的 VNet 访问源和目标数据库。

    • 确保 VNet 网络安全组 (NSG) 规则不会阻止服务总线、存储和 Azure Monitor 的服务标记的出站端口 443。 有关 VNet NSG 流量筛选的更多信息,请参阅使用网络安全组筛选网络流量

    如果你想要向服务添加标记,请先选择“下一步: 标记”转到“标记”选项卡。 向服务添加标记是可选操作。

  10. 导航到“查看 + 创建”选项卡,查看配置和条款,然后选择“创建”。

    选择“查看 + 创建”的屏幕截图。

    现在,开始部署 DMS 实例。 “部署正在进行”消息会显示几分钟,然后变为“部署已完成”。

  11. 选择“转到资源”。

    选择“转到资源”的屏幕截图。

  12. 从资源概述页中标识 DMS 实例的 IP 地址,并为源单一服务器和目标灵活服务器创建防火墙规则,列出 DMS 实例的 IP 地址。

创建迁移项目

若要创建迁移项目,请执行以下步骤。

  1. 在 Azure 门户中,选择“所有服务”,搜索 Azure 数据库迁移服务,然后选择“Azure 数据库迁移服务”。

    查找 Azure 数据库迁移服务的所有实例的屏幕截图。

  2. 在搜索结果中选择创建的 DMS 实例,然后选择“+ 新建迁移项目”。

    选择“新建迁移项目”的屏幕截图。

  3. 新建迁移项目页上指定项目名称,在“源服务器类型”选择框中选择 Azure Database For MySQL 单一服务器,在“目标服务器类型”选择框中选择 Azure Database For MySQL,在迁移活动类型选择框中选择脱机迁移,然后选择创建并运行活动

    如果仅选择“创建项目”作为迁移活动类型,则只会创建迁移项目;可在以后运行该迁移项目。

    创建新迁移项目的屏幕截图。

配置迁移项目

若要配置 DMS 迁移项目,请执行以下步骤。

  1. 若要继续进行脱机迁移,在屏幕上配置“选择源”之前,请打开一个新窗口选项卡,导航到 Azure 门户上的源服务器概述页,然后转到“服务器参数”边栏选项卡。 将源服务器的 read_only 服务器参数的值设置为 ON。

    通过在开始迁移之前更新该服务器参数,将源服务器设置为只读模式可阻止在迁移期间对源服务器执行写入/删除操作,这可确保在迁移源时目标数据库的数据完整性。

    或者,如果执行的是联机迁移,请在“选择源”屏幕上选中“启用事务一致性”复选框。 有关一致性备份的详细信息,请参阅 MySQL 到 Azure Database for MySQL 的数据迁移 - MySQL 一致性快照

  2. 导航回迁移项目配置屏幕,在“选择源”屏幕上,指定源 MySQL 实例的连接详细信息。

    添加源详细信息屏幕的屏幕截图。

  3. 选择“下一步: 选择目标>>”,然后在“选择目标”屏幕上指定目标灵活服务器的连接详细信息。

    “选择目标”的屏幕截图。

  4. 选择“下一步: 选择数据库>>”,然后在“选择数据库”选项卡上的“[预览] 选择服务器对象”下,选择要迁移的服务器对象。

    “选择数据库”的屏幕截图。

  5. 在“选择数据库”部分的“源数据库”下,选择要迁移的数据库。

    将迁移指定的数据库中的非表对象,并跳过未选择的项。

  6. 选择“下一步: 选择数据库”>>导航到“选择表”选项卡。

    在填充该选项卡之前,DMS 会从源和目标上的选定数据库中提取表,然后确定表是否存在并包含数据。

  7. 选择要迁移的表。

    如果在源数据库中选择的表不存在于目标数据库中,则默认会选中“迁移架构”下的框。 对于确实存在于目标数据库中的表,会有一条备注指出所选的表已包含数据并将被截断。 此外,如果目标服务器上的表架构与源上的架构不匹配,则在迁移继续之前会删除该表。

    “选择表”的屏幕截图。

    DMS 将验证你的输入,如果通过了验证,你可以开始迁移。

  8. 针对架构迁移进行配置后,请选择“查看并开始迁移”。

    注意

    只有在尝试对失败的迁移进行故障排除时,才需要导航到“配置迁移设置”选项卡。

  9. 在“摘要”选项卡上的“活动名称”文本框中指定迁移活动的名称,然后查看摘要,确保源和目标详细信息与前面指定的信息匹配。

    选择“摘要”的屏幕截图。

  10. 选择“开始迁移”。

    迁移活动窗口随即出现,活动的“状态”为“正在初始化” 。 表迁移开始时,“状态”将更改为“正在运行” 。

监视迁移

  1. 在迁移活动屏幕上,选择“刷新”以更新显示内容并查看进度和已完成的表数。

  2. 若要在迁移期间查看每个表的状态,请选择数据库名称,然后选择“刷新”以更新显示内容。

  3. 选择“刷新”以更新显示内容,直到迁移“状态”显示为“已完成”。

    迁移状态的屏幕截图。

执行迁移后活动

迁移完成后,请务必完成以下迁移后活动。

  • 针对目标数据库执行应用程序的性能测试,以验证迁移。

  • 更新连接字符串以指向新的目标灵活服务器。

  • 确保应用程序持续正常运行后,删除源单一服务器。

  • 如果纵向扩展了目标灵活服务器以加快迁移速度,请按照下表中的详细信息根据源单一服务器定价层和 VCore 数,通过选择目标灵活服务器的计算大小和计算层来缩减该服务器。

    单一服务器定价层 单一服务器 VCore 数 灵活服务器计算大小 灵活服务器计算层
    基本 1 可突发 Standard_B1s
    基本 2 可突发 Standard_B2s
    常规用途 4 常规用途 Standard_D4ds_v4
    常规用途 8 常规用途 Standard_D8ds_v4
    • 清理数据迁移服务资源:

      1. 在 Azure 门户中,选择“所有服务”,搜索 Azure 数据库迁移服务,然后选择“Azure 数据库迁移服务”。
      2. 从搜索结果中选择你的迁移服务实例,然后选择“删除服务”。
      3. 在确认对话框中的“键入数据库迁移服务名称”文本框内指定服务名称,然后选择“删除”。

迁移最佳做法

执行迁移时,请务必记住以下最佳做法。

  • 在发现和评估过程中,利用一些关键数据来帮助迁移,包括服务器 SKU、CPU 使用率、存储大小、数据库大小和扩展用法等。

  • 规划每个数据库的迁移模式。 对于较简单的迁移和较小的数据库,请考虑使用脱机模式。

  • 在为生产迁移之前执行测试迁移:

    • 测试迁移是重要的操作,可确保涵盖数据库迁移的各个方面,包括应用程序测试。 如果要迁移到更高的 MySQL 版本,请测试应用程序兼容性。
    • 测试完成后,可以迁移生产数据库。 此时需要确定生产迁移的日期和时间。 理想情况下,此时的应用程序使用率较低。 涉及的所有利益干系人都应随时有时间参与并准备就绪。 需要对生产迁移进行密切监视。
  • 重定向所有相关应用程序以访问新的主数据库,并打开应用程序以供生产使用。

  • 应用程序在目标灵活服务器上开始运行后,密切监视数据库性能,以确认是否需要进行性能优化。