你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注释
本文包含对术语“从属”的引用,这是 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。 数据迁移资源提供者执行以下步骤:
在创建第一个 DMS 实例之前,请登录到 Azure 门户,然后搜索并选择“订阅”。
选择要为其创建 DMS 实例的订阅,然后选择 “资源提供程序”。
搜索“迁移”,然后搜索 Microsoft.DataMigration,然后选择 “注册”。
创建数据库迁移服务 (DMS) 实例
在 Azure 门户中,依次选择 “+ 创建资源”、“搜索”Azure 数据库迁移服务“一词,然后从下拉列表中选择 Azure 数据库迁移服务 。
在“Azure 数据库迁移服务”屏幕上,选择“创建” 。
在“选择迁移方案和数据库迁移服务”页上的“迁移方案”下,选择“MySQL”作为源服务器类型,选择“Azure Database for MySQL”作为目标服务器类型,然后选择“选择”。
在“创建迁移服务”页上的“基本信息”选项卡上的“项目详细信息”下,选择相应的订阅,然后选择现有资源组或创建新的资源组。
在 “实例详细信息”下,指定服务的名称,选择一个区域,并验证 是否选择了 Azure 作为服务模式。
在“定价层”的右侧,选择“配置层”。
在“配置”页上为 DMS 实例选择具有 4 个 vCore 的高级定价层,然后选择“应用”。
DMS Premium 4-vCore 自创建 DMS 服务之日起免费使用6个月(183天),之后将开始收费。 有关 DMS 成本和定价层的详细信息,请参阅定价页。
接下来,我们需要指定提供对源 MySQL 服务器和目标灵活服务器的 DMS 实例访问权限的虚拟网络(虚拟网络)。
在“创建迁移服务”页上,选择“下一步: 网络 ”。
在“ 网络 ”选项卡上,从列表中选择现有虚拟网络或提供要创建的新虚拟网络的名称,然后选择“ 查看 + 创建”。
有关详细信息,请参阅使用 Azure 门户创建虚拟网络一文。
虚拟网络必须配置为同时访问源 MySQL 服务器和目标灵活服务器,因此请务必:
- 为源 MySQL 服务器和目标 MySQL 灵活服务器创建服务器级防火墙规则,以允许 Azure 数据库迁移服务的虚拟网络访问源数据库和目标数据库。
- 请确保虚拟网络的网络安全组 (NSG) 规则不阻止 ServiceBus、存储和 Azure Monitor 的 ServiceTag 的出站端口 443。 有关虚拟网络 NSG 流量筛选的详细信息,请参阅 使用网络安全组筛选网络流量。
注释
若要向服务添加标记,请选择“下一步: 标记”,进入“标记”选项卡。 向服务添加标记是可选操作。
导航到“ 查看 + 创建 ”选项卡,查看配置,查看术语,然后选择“ 创建”。
DMS 实例的部署现已开始。 消息“部署正在进行”显示几分钟,然后将其更改为“部署已完成”。
选择 转到资源。
从资源概述页标识 DMS 实例的 IP 地址,为源 MySQL 服务器创建防火墙规则,并将灵活服务器指定为目标,从而将 DMS 实例的 IP 地址加入允许列表。
创建迁移项目
若要创建迁移项目,请执行以下步骤。
在 Azure 门户中,选择“所有服务”,搜索 Azure 数据库迁移服务,然后选择“Azure 数据库迁移服务”。
在搜索结果中,选择创建的 DMS 实例,然后选择“ + 新建迁移项目”。
在 “新建迁移项目 ”页上,指定项目的名称。 在 “源服务器类型 选择”框中,选择 “MySQL”。 在 “目标服务器类型 ”选择框中,选择 Azure Database For MySQL。 在 “迁移活动类型 ”选择框中,选择 “[预览]”物理联机数据迁移。 然后选择“ 创建并运行活动”。
仅选择“创建项目”作为仅创建迁移项目的迁移活动类型;然后,可以稍后运行它。
配置迁移项目
若要配置 DMS 迁移项目,请执行以下步骤。
在 “选择源 ”屏幕上,必须确保 DMS 位于虚拟网络中,该虚拟网络已连接到源服务器。 在此处,将源服务器名称、服务器端口、用户名和密码输入到源 MySQL 服务器,然后选择“下一步:选择目标>>”
在“选择目标”屏幕的“自动服务器选择”下,选择“订阅”、“位置”、“资源组”、“Azure Database for MySQL 服务器名称”、“用户名”、“目标 Azure Database for MySQL 服务器的密码”,然后选择“下一步:选择备份>>”
在“选择备份”屏幕上,输入应用注册的应用程序 ID、应用注册中的客户端密码、应用注册中的租户 ID、订阅、存储帐户名称、Blob 容器名称和存储 percona xtrabackup 文件的备份目录名称,然后选择“下一步:配置迁移设置>>”
现在有“ 迁移用户帐户和特权 ”选项。 选中后,此选项会迁移所有登录迁移。 此外,还可以将源 MySQL 服务器中的任何 DDL 语句 复制到目标灵活服务器。
在“配置迁移设置”屏幕上,如果要自定义迁移设置,请选中该复选框,或者通过选择“下一步:摘要>>”转到摘要页
在“摘要”屏幕上的“活动名称”文本框中,指定迁移活动的名称。 确保所有与迁移相关的详细信息正确,然后选择“开始迁移”。
迁移启动后,将显示迁移活动窗口。 在“初始加载”选项卡下,状态更改为“正在运行”。
监视迁移
在迁移进行过程中,可以查看迁移的状态,并注意物理备份文件向目标 MySQL 灵活服务器的数据引入的状态,例如“正在导入”和“估计剩余时间”。
初始加载活动完成后,您会自动导航到“复制数据更改”选项卡。您可以查看迁移进度,因为屏幕每 30 秒自动刷新一次,或者您可以选择“刷新”按钮。
初始数据引入完成后,监视“复制数据更改”选项卡下的“落后于源的秒数”字段。一旦它为 0,请导航到迁移活动屏幕顶部的“开始直接转换”按钮,继续启动直接转换。 选择“刷新”以更新显示屏幕,并在需要时查看与源相差的秒数。
在准备好进行割接之前,请在割接窗口中按照步骤 1 至 3 操作。
完成所有步骤后,选择“确认”,然后选择“应用”。
执行迁移后活动
迁移完成后,请务必完成以下迁移后活动。
使用上述方法之一对目标数据库执行验证和数据集成,以验证迁移完成情况。
可以通过比较 行计数 或 校验和,来验证源灵活服务器和目标灵活服务器之间的数据。
还可以转到目标灵活服务器,在 “设置”下,选择“ 数据库 ”页,并验证要迁移的数据库是否已成功迁移到目标。
更新连接字符串以指向新的灵活服务器。
- 若要清理 DMS 资源,请执行以下步骤:
在 Azure 门户中,选择“所有服务”,搜索 Azure 数据库迁移服务,然后选择“Azure 数据库迁移服务”。
从搜索结果中选择你的迁移服务实例,然后选择“删除服务”。
在确认对话框中的 “类型数据库迁移服务名称 ”文本框中,指定实例的名称,然后选择“ 删除”。
为灵活服务器创建任何只读副本,以实现可伸缩性和恢复。
迁移最佳做法
执行迁移时,请务必考虑以下最佳做法。
作为发现和评估的一部分,请考虑服务器 SKU、CPU 使用率、存储、数据库大小和扩展使用情况,作为一些关键数据来帮助迁移。
在为生产迁移之前执行测试迁移:
测试迁移非常重要,以确保涵盖数据库迁移的所有方面,包括应用程序测试。 最佳做法是在开始时完全出于测试目的来运行迁移。 在新启动的迁移以最小延迟进入“复制数据更改”阶段后,将灵活服务器目标设为正在运行的测试工作负载。 使用该目标测试应用程序并确保预期性能和结果。 如果要迁移到更高的 MySQL 版本,则测试应用程序兼容性。
测试完成后,可以迁移生产数据库。 此时,需要完成生产迁移的日期和时间。 理想情况下,此时的应用程序使用率较低。 涉及的所有利益干系人都应随时有时间参与并准备就绪。 需要对生产迁移进行密切监视。 对于联机迁移,必须先完成复制,然后才能执行直接转换以防止数据丢失。
重定向所有依赖应用程序来访问新的主数据库,并将源服务器设为只读。 然后,打开应用程序供生产使用。
应用程序在目标灵活服务器上开始运行后,密切监视数据库性能,以确定是否需要性能优化。