应用程序迁移

已完成

将数据库从本地迁移到 Azure 后,需要更新现有应用程序,以便他们可以在其新位置访问 MySQL。

原始本地服务器和数据库将包含定义与用户关联的特权、他们可以执行的作以及他们执行这些作的对象的角色。 Azure Database for MySQL 使用与在本地运行的 PostgreSQL 相同的身份验证和授权机制。

在本单元中,你将了解应用程序连接到新迁移的 Azure Database for MySQL 所需的更新。

手动创建用户

原始本地服务器和数据库将包含用户、他们执行的作以及执行这些作的对象。 Azure Database for MySQL 使用与在本地运行的 MySQL 相同的身份验证和授权机制。

使用 Azure 数据库迁移服务将 MySQL 数据库传输到 Azure Database for MySQL 时,不会复制用户。 必须为目标数据库中表的管理员和用户手动重新创建必要的用户帐户。 若要执行这些任务,请使用 SQL 语言或实用工具,例如 MySQL Workbench。 运行 CREATE USER 命令。 使用 GRANT 命令向用户分配必要的权限。 例如:

CREATE USER 'myuseraccount'@'%' IDENTIFIED BY 'mY!P@ss0rd';
GRANT ALL PRIVILEGES ON DATABASE [Database Name].* TO myuseraccount;
FLUSH PRIVILEGES;

若要查看本地数据库中的现有授权,请运行以下 SQL 语句:

USE [Database Name];

SHOW GRANTS FOR 'myuseraccount'@'%';;

重新配置应用程序

将应用程序配置为连接到 Azure Database for MySQL 的过程非常简单。 但是,必须制定迁移应用程序的策略。

重新配置 MySQL 应用程序时的注意事项

在企业环境中,可能有许多应用程序针对同一 MySQL 数据库运行。 可能有大量用户运行这些应用程序。 需要确保,从现有系统切换到 Azure Database for MySQL 时,系统仍可正常运行,用户可以继续执行其作业,并且业务关键型作仍可正常运行。 模块 1,第 2 课, 迁移注意事项,一般讨论了许多问题。

将 MySQL 数据库迁移到 Azure 时,需要考虑一些具体事项:

  • 如果正在执行脱机迁移,则原始 MySQL 数据库中的数据和 Azure 上运行的新数据库可能会在旧数据库仍在使用时快速开始分流。 当系统完全运行一段时间后,脱机迁移适合,然后在重新启动之前将所有应用程序切换到新系统。 对于业务关键型系统,这种方法可能是不可能的。 如果要迁移到在 Azure 虚拟机上运行的 MySQL,可以在本地系统与 Azure 中运行的 MySQL 复制之间配置 MySQL 复制。 本机 MySQL 复制仅以一个方向运行,但第三方解决方案支持 MySQL 服务器之间的双向复制。 这些解决方案不适用于 Azure Database for MySQL。
  • 如果要执行联机迁移,Azure Database for MySQL 服务会设置从本地数据库到在 Azure 中运行的数据库的复制。 初始数据传输后,复制可确保本地数据库中所做的任何更改都复制到 Azure 中的数据库,但不会以另一种方式进行复制。

在这两种情况下,都应确保不会通过意外覆盖丢失实时数据。 例如,在联机方案中,连接到 Azure Database for MySQL 中运行的数据库的应用程序可能会让仍在使用本地数据库的应用程序盲目覆盖其更改。 因此,应考虑以下方法:

  • 根据应用程序的工作负荷类型迁移应用程序。 访问数据以供读取的应用程序只能安全地移动到 Azure Database for MySQL 中运行的数据库,并且将看到仍在使用本地数据库的应用程序所做的所有更改。 如果只读应用程序不需要完全 up-to数据数据,还可以采用相反的策略。
  • 根据用户的工作负荷类型迁移用户。 此策略与上一个策略类似,只是你可能拥有仅生成报表的用户,而其他人则修改数据。 可以配置相同的应用程序,以便根据用户的要求连接到相应的数据库。
  • 根据所使用的数据集迁移应用程序。 如果不同的应用程序使用不同的数据子集,则你也许能够相互独立地迁移这些应用程序。

重新配置应用程序

若要重新配置应用程序,请将其指向新数据库。 大多数编写良好的应用程序应隔离连接逻辑,这应该是需要更改的代码的唯一部分。 在许多情况下,连接信息可能存储为配置信息,因此只需更新该信息。

可以在 Azure 门户中的 Azure Database for MySQL 服务的 连接字符串 页上找到 Azure Database for MySQL 服务的连接信息。 Azure 提供了许多常见编程语言和框架的信息。

一张图像,展示 Azure 门户中 Azure Database for MySQL 项目的连接字符串页面

打开网络端口

如本模块第 1 课中所述,Azure Database for MySQL 是一种在防火墙后运行的受保护服务。 客户端无法连接,除非服务识别其 IP 地址。 对于运行需要连接到数据库的应用程序的客户端,必须添加 IP 地址或地址块范围。

测试和验证应用程序

在将应用程序和用户切换到新数据库之前,请务必确保已正确配置所有内容。

首先,“干运行”应用程序并作为每个角色进行连接,以确保正确的功能可用。

接下来,执行“浸泡测试”来模拟一段时间内并发运行典型工作负荷的用户数。 监视系统,并验证是否已为 Azure Database for MySQL 服务分配足够的资源。

现在可以开始向用户推出系统。 实施某种形式的“Canary 测试”可能很有帮助,其中一小部分用户不会意识到。 这让你对用户拥有新数据库的体验是相同、更好还是更差,这提供了一个不偏不开的观点。