你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:通过 Azure 门户使用 DMS 物理迁移从 MySQL 迁移到 Azure Database for MySQL(预览版)

注释

本文包含对术语“从属”的引用,这是 Microsoft 不再使用的术语。 在从软件中删除该术语后,我们会将其从本文中删除。

使用物理备份文件,可以将 Azure 或其他云服务上的 MySQL 本地或虚拟机(VM)工作负荷无缝迁移到 Azure Database for MySQL。 使用物理备份文件,可以快速将源服务器还原到目标灵活服务器实例,同时尽量缩短停机时间。 本教程介绍如何使用 Azure DMS 将 MySQL 工作负载从本地或 VM 迁移到 Azure Database for MySQL,同时使用 Percona XtraBackup 将停机时间降至最低。

注释

DMS 物理联机数据迁移 现在以公共预览版提供。 DMS 支持迁移到 MySQL 版本 5.7 和 8.0,以及从较低版本的 MySQL 服务器(v5.6 及更高版本)迁移到更高版本的 MySQL 服务器。 此外,DMS 还支持跨区域、跨资源组和跨订阅迁移。

本教程中,您将学习如何:

  • 创建和配置源 MySQL 服务器、目标灵活服务器和其他必需服务。
  • 创建 DMS 实例。
  • 在 DMS 中创建用于物理迁移的 MySQL 迁移项目。
  • 运行迁移。
  • 监视迁移。
  • 执行迁移后活动。
  • 实施有关执行迁移的最佳做法。

先决条件

要完成本教程,需要:

  • 创建或使用现有的 MySQL 实例(源服务器,无论是本地还是 Azure 或其他云中的 VM)。

  • 若要成功完成联机迁移,请确保在源 MySQL 服务器上满足以下先决条件:

    • 确保参数 lower_case_table_names 设置为 1
    • 确保参数 innodb_file_per_table 设置为 ON
    • 系统表空间应为 ibdata1
    • 系统表空间 ibdata1 大小应大于或等于 12MB (MySQL 默认值)。
    • 确保参数 innodb_page_size 设置为 16384 (MySQL 默认值)
    • 仅支持 INNODB 存储引擎。
    • 确保使用参数 binlog_expire_logs_seconds 正确设置 binlog 保留期,以完成联机迁移。
    • 确保用于迁移的用户在源服务器上具有“REPLICATION CLIENT”和“REPLICATION SLAVE”权限,以读取和应用 bin 日志。
  • 使用 Percona XtraBackup 对 MySQL 工作负荷进行物理备份。 以下是使用 Percona XtraBackup 执行完整备份的步骤:

    • 在本地或 VM 工作负载上安装 Percona XtraBackup。 对于 MySQL 引擎版本 v5.7,请安装 Percona XtraBackup 版本 2.4(参阅安装 Percona XtraBackup 2.4)。 对于 MySQL 引擎版本 v8.0,请安装 Percona XtraBackup 版本 8.0(参阅安装 Percona XtraBackup 8.0)。

    • 有关使用 Percona XtraBackup 2.4 执行完整备份的说明,请参阅完整备份。 有关使用 Percona XtraBackup 8.0 执行完整备份的说明,请参阅 完整备份

    • 执行完整备份时,请按顺序运行以下命令:

      • xtrabackup --backup --host={host} --user={user} --password={password} --target-dir={backup__dir_path}
      • xtrabackup --prepare --{backup_dir_path} (在此处提供与上一命令中相同的备份路径)
    • 采用 Percona XtraBackup 时的注意事项:

      • 请确保运行备份和准备步骤。
      • 请确保备份和准备步骤中没有错误。
      • 保留备份并准备步骤日志,这在故障发生时是 Azure 支持所需要的。

      重要

      尝试访问从源服务器导入的损坏表可能会导致目标灵活服务器崩溃。 因此,在使用 Percona XtraBackup 实用工具进行备份之前,建议在源服务器上执行“mysqlcheck/Optimize Table”作。

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

    • 在目标灵活服务器上, 将max_allowed_packet 设置为 1073741824(即 1GB), 以防止由于大型行数据传输而导致连接问题。
    • 在目标灵活服务器上设置 sql_mode 服务器参数以匹配源服务器配置。
    • 设置 TLS 版本require_secure_transport 服务器参数以匹配源服务器的值。
    • 在目标灵活服务器上配置服务器参数,以匹配源服务器上使用的任何非默认值。
  • 创建 Azure Blob 容器并获取容器的共享访问签名 (SAS) 令牌(Azure 门户Azure CLI)。 确保在“权限”下拉列表中授予“添加”、“创建”和“写入”。

    重要

    将 Blob SAS 令牌和 URL 值保存在安全位置。 这些信息只会显示一次,窗口关闭后就无法检索。

  • 将 {backup_dir_path} 上的 Percona Xtrabackup 的完整备份文件上传到 Azure Blob 存储。 按照以下步骤 上传文件

  • DMS 使用从 xtrabackup_binlog_info 文件执行完整备份时捕获的 binlog 位置,以自动启动复制过程,以尽量减少停机时间迁移。

  • 应使用 SAS 令牌公开访问 Azure 存储帐户。 不支持使用虚拟网络配置的 Azure 存储帐户。

  • 需要创建 应用注册 ,并且需要生成使用 客户端机密 的应用密钥才能在物理迁移工作流中使用。 此应用可与存储帐户和目标灵活服务器一起使用,用于 SAS 密钥创建和服务器更新。

  • 通过具有以下角色的存储帐户的应用注册,分配基于角色的访问控制 (RBAC) 角色分配

    • 用于读取 blob 容器文件的存储 blob 数据读取器
  • 将“参与者”角色分配给目标 MySQL 灵活服务器上的应用注册

局限性

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

源服务器配置尚未迁移。 在启动迁移之前,必须正确配置目标灵活服务器。

  • 不支持迁移加密备份。
  • 不支持在导入操作时取消迁移。
  • 联机迁移支持仅限于 ROW binlog 格式。
  • Azure Database for MySQL 不支持大小写混合的数据库。
  • Azure DMS 语句或 binlog 复制不支持以下语法:“CREATE TABLE b as SELECT * FROM 'a';”。 此 DDL 的复制会导致以下错误:“在 CREATE TABLE 和 START TRANSACTION 语句后仅允许 BINLOG INSERT、COMMIT 和 ROLLBACK 语句。
  • 迁移持续时间受后端计算维护的影响,这可能会重置进度。

使用 DMS 加快数据加载速度的最佳做法

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

  • 为获得最佳迁移体验,请根据源 MySQL 服务器配置为目标灵活服务器选择 计算大小和计算层

    • 建议在迁移期间将目标灵活服务器设置为 General-Purpose 或业务关键型 SKU。 迁移成功后,可以将实例缩放为适当的大小以满足应用程序需求。
  • 目标灵活服务器的 MySQL 版本必须大于或等于源 MySQL 服务器的版本。

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

  • 考虑在同一区域中部署 Azure Blob 存储和目标灵活服务器,以便在导入作期间获得更好的性能。

设置 DMS

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

注册资源提供程序

注册 Microsoft。 数据迁移资源提供者执行以下步骤:

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

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

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

  3. 搜索“迁移”,然后搜索 Microsoft.DataMigration,然后选择 “注册”。

    注册资源提供程序的屏幕截图。

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

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

    Azure 市场中 DMS 的屏幕截图。

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

    “从 Azure 市场创建”的屏幕截图。

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

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

  5. “实例详细信息”下,指定服务的名称,选择一个区域,并验证 是否选择了 Azure 作为服务模式。

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

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

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

    DMS Premium 4-vCore 自创建 DMS 服务之日起免费使用6个月(183天),之后将开始收费。 有关 DMS 成本和定价层的详细信息,请参阅定价页

    选择定价层的屏幕截图。

    接下来,我们需要指定提供对源 MySQL 服务器和目标灵活服务器的 DMS 实例访问权限的虚拟网络(虚拟网络)。

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

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

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

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

    虚拟网络必须配置为同时访问源 MySQL 服务器和目标灵活服务器,因此请务必:

    • 为源 MySQL 服务器和目标 MySQL 灵活服务器创建服务器级防火墙规则,以允许 Azure 数据库迁移服务的虚拟网络访问源数据库和目标数据库。
    • 请确保虚拟网络的网络安全组 (NSG) 规则不阻止 ServiceBus、存储和 Azure Monitor 的 ServiceTag 的出站端口 443。 有关虚拟网络 NSG 流量筛选的详细信息,请参阅 使用网络安全组筛选网络流量

    注释

    若要向服务添加标记,请选择“下一步: 标记”,进入“标记”选项卡。 向服务添加标记是可选操作。

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

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

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

  11. 选择 转到资源

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

  12. 从资源概述页标识 DMS 实例的 IP 地址,为源 MySQL 服务器创建防火墙规则,并将灵活服务器指定为目标,从而将 DMS 实例的 IP 地址加入允许列表。

创建迁移项目

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

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

    DMS 搜索的屏幕截图。

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

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

  3. “新建迁移项目 ”页上,指定项目的名称。 在 “源服务器类型 选择”框中,选择 “MySQL”。 在 “目标服务器类型 ”选择框中,选择 Azure Database For MySQL。 在 “迁移活动类型 ”选择框中,选择 “[预览]”物理联机数据迁移。 然后选择“ 创建并运行活动”。

    仅选择“创建项目”作为仅创建迁移项目的迁移活动类型;然后,可以稍后运行它。

    选择迁移活动的屏幕截图。

配置迁移项目

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

  1. “选择源 ”屏幕上,必须确保 DMS 位于虚拟网络中,该虚拟网络已连接到源服务器。 在此处,将源服务器名称服务器端口用户名和密码输入到源 MySQL 服务器,然后选择“下一步:选择目标>>”

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

  2. “选择目标”屏幕的“自动服务器选择”下,选择“订阅”、“位置”、“资源组”、“Azure Database for MySQL 服务器名称”、“用户名”、“目标 Azure Database for MySQL 服务器的密码”,然后选择“下一步:选择备份>>”

    选择目标的屏幕截图。

  3. “选择备份”屏幕上,输入应用注册的应用程序 ID、应用注册中的客户端密码、应用注册中的租户 ID订阅存储帐户名称、Blob 容器名称和存储 percona xtrabackup 文件的备份目录名称,然后选择“下一步:配置迁移设置>>

    现在有“ 迁移用户帐户和特权 ”选项。 选中后,此选项会迁移所有登录迁移。 此外,还可以将源 MySQL 服务器中的任何 DDL 语句 复制到目标灵活服务器。

    “选择备份”屏幕的屏幕截图。

  4. “配置迁移设置”屏幕上,如果要自定义迁移设置,请选中该复选框,或者通过选择“下一步:摘要>>”转到摘要页

    配置迁移设置页的屏幕截图。

  5. 在“摘要”屏幕上的“活动名称”文本框中,指定迁移活动的名称。 确保所有与迁移相关的详细信息正确,然后选择“开始迁移”。

    迁移摘要和详细信息页的屏幕截图。

  6. 迁移启动后,将显示迁移活动窗口。 在“初始加载”选项卡下,状态更改为“正在运行”。

监视迁移

  1. 在迁移进行过程中,可以查看迁移的状态,并注意物理备份文件向目标 MySQL 灵活服务器的数据引入的状态,例如“正在导入”和“估计剩余时间”

    迁移状态页的屏幕截图。

    初始加载活动完成后,您会自动导航到“复制数据更改”选项卡。您可以查看迁移进度,因为屏幕每 30 秒自动刷新一次,或者您可以选择“刷新”按钮。

  2. 初始数据引入完成后,监视“复制数据更改”选项卡下的“落后于源的秒数”字段。一旦它为 0,请导航到迁移活动屏幕顶部的“开始直接转换”按钮,继续启动直接转换。 选择“刷新”以更新显示屏幕,并在需要时查看与源相差的秒数。

    监视复制状态的屏幕截图。

  3. 在准备好进行割接之前,请在割接窗口中按照步骤 1 至 3 操作。

  4. 完成所有步骤后,选择“确认”,然后选择“应用”。

    执行切换的屏幕截图。

执行迁移后活动

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

  • 使用上述方法之一对目标数据库执行验证和数据集成,以验证迁移完成情况。

    • 可以通过比较 行计数校验和,来验证源灵活服务器和目标灵活服务器之间的数据。

    • 还可以转到目标灵活服务器,在 “设置”下,选择“ 数据库 ”页,并验证要迁移的数据库是否已成功迁移到目标。

      验证迁移目标的屏幕截图。

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

    • 若要清理 DMS 资源,请执行以下步骤:
    1. 在 Azure 门户中,选择“所有服务”,搜索 Azure 数据库迁移服务,然后选择“Azure 数据库迁移服务”。

    2. 从搜索结果中选择你的迁移服务实例,然后选择“删除服务”。

    3. 在确认对话框中的 “类型数据库迁移服务名称 ”文本框中,指定实例的名称,然后选择“ 删除”。

  • 为灵活服务器创建任何只读副本,以实现可伸缩性和恢复。

迁移最佳做法

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

  • 作为发现和评估的一部分,请考虑服务器 SKU、CPU 使用率、存储、数据库大小和扩展使用情况,作为一些关键数据来帮助迁移。

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

    • 测试迁移非常重要,以确保涵盖数据库迁移的所有方面,包括应用程序测试。 最佳做法是在开始时完全出于测试目的来运行迁移。 在新启动的迁移以最小延迟进入“复制数据更改”阶段后,将灵活服务器目标设为正在运行的测试工作负载。 使用该目标测试应用程序并确保预期性能和结果。 如果要迁移到更高的 MySQL 版本,则测试应用程序兼容性。

    • 测试完成后,可以迁移生产数据库。 此时,需要完成生产迁移的日期和时间。 理想情况下,此时的应用程序使用率较低。 涉及的所有利益干系人都应随时有时间参与并准备就绪。 需要对生产迁移进行密切监视。 对于联机迁移,必须先完成复制,然后才能执行直接转换以防止数据丢失。

  • 重定向所有依赖应用程序来访问新的主数据库,并将源服务器设为只读。 然后,打开应用程序供生产使用。

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