将本地 MySQL 数据库迁移到 Azure
一家公司决定迁移到 Azure Database for MySQL 后,下一步就是计划如何迁移本地数据库以及如何选择用于数据移动工具。
了解 Azure Database for MySQL 如何在 Azure 上支持和缩放 MySQL 后,现在需要考虑如何迁移现有的本地数据库。
在本单元中,你将了解如何使用 Azure 门户创建 Azure Database for MySQL 服务的实例。 如果需要创建此服务的多个实例,可使用 Azure CLI 来编写进程的脚本。
使用门户创建 Azure Database for MySQL
在 Azure 门户中,选择“Azure 市场”中的“数据库”命令,然后选择“Azure Database for MySQL”。
输入服务的详细信息。 这些方法包括:
- 服务器名称。 它必须是唯一名称,介于 3 至 63 个字符之间,仅包含小写字母、数字和连字符。
- 数据源。 如果出于迁移目的要创建新的服务器,请选择“无”。 通过“备份”选项,可将从 Azure Database for MySQL 的另一个实例中获取的备份还原到此服务中。
- 管理员用户名。 这是将创建的具有管理权限的用户帐户的名称。 Azure 会创建一些帐户供自己使用,其他名称会受到限制;不能使用 azure_superuser、admin、administrator、root、guest 或 public。
- 密码。 密码必须介于 8 至 128 个字符之间。 它应同时包含大写字母和小写字母、数字和非字母数字字符。 Azure Database for MySQL 当前仅支持密码验证;尚未提供与 Microsoft Entra ID 的集成。
- 版本。 选择与要迁移的本地数据库相对应的版本。
- 计算 + 存储。 选择“配置服务器”来设置定价层,并指定服务所需的资源。 第 1 课中介绍了这些选项。 请记住,如果选择“常规用途”或“内存优化”定价层,之后可增加和减少虚拟处理器核心的数量。 但是,不能减少存储量;创建服务器后,存储量只会增加。
选择“查看 + 创建”以部署服务。 部署将需要几分钟的时间。
部署服务后,选择“连接安全性”选项,并添加适当的防火墙规则以允许客户端进行连接,如第 1 课的“客户端连接”主题中所述。 同时必须选择“允许访问 Azure 服务”选项。
使用 Azure CLI 创建 Azure Database for MySQL 实例
使用 az mysql server create
命令创建 Azure Database for MySQL 的实例。 以下语句显示了创建 MySQL 实例的示例。 大多数参数都一目了然,但以下参数除外:
- sku-name。 通过定价层(B 表示基本、GP 表示常规用途、MO 表示内存优化)、计算代系(Gen4 或 Gen5)和虚拟 CPU 内核数的组合构造此参数。 在以下示例中,服务器是使用常规用途定价层和 Gen5 代系的 4 个 CPU 内核创建的。
- storage-size。 这是所需的磁盘存储量,指定以兆字节为单位。 下面的示例分配了 10 GB。
az mysql server create \
--name contoso-MySQL-server \
--resource-group MySQLrg \
--admin-user contosoadmin \
--admin-password 7Hh7*ku5k$$£jhk \
--sku-name GP_Gen5_4 \
--storage-size 10240
执行脱机迁移
脱机迁移在特定时间点拍摄源数据库的快照,并将该数据复制到目标数据库。 在拍摄快照后对源数据所做的任何更改都不会反映在目标数据库中。
如果要执行到 Azure Database for MySQL 的脱机迁移,你至少有两种选择:
导出再导入
可使用 MySQL Workbench 等工具从 MySQL 导出数据库,然后将其导入 Azure Database for MySQL。 在下面几种情况中,此方法非常有用:
- 你想要选择要导入的表。
- 你想要选择要导出和导入的数据库对象,包括视图、存储过程、约束和函数。
- 你还想要从其他源迁移数据。 例如,你需要添加文本文件中的数据,并使用 mysqlimport 将这些数据作为表添加到数据库。
可使用 MySQL Workbench 执行导出和导入。 从“服务器”菜单中,选择“数据导出”或“数据导入”。
注意
还可使用 mysqldump 导出特定的表,方式是在数据库名称后面列出其名称。
有关详细信息,请参阅使用导入和导出迁移 MySQL 数据库。
转储和还原
如果希望高效地移动整个数据库,请使用转储和还原。
使用转储和还原时,有一些注意事项:
- 使用 exclude-triggers 选项防止在还原期间触发触发器。
- 使用 single-transaction 选项将整个数据库转储到单个事务中。
- 使用 disable-keys 选项禁止在过程中触发外键约束。
- 使用 defer-table-indexes 选项延迟索引创建,直至完成还原为止。
有关 mysqldump 的详细信息,请参阅 mysqldump - 数据库备份计划。
注意
还可使用 mysqldump 导出特定的表,方式是在数据库名称后面列出其名称。
Azure 数据库迁移服务 (DMS)
除了脱机迁移到 Azure Database for MySQL 之外,DMS 还支持跨区域、跨资源组和跨订阅迁移,因此你可以为目标服务器选择一个不同的区域、资源组和订阅,而不是为源服务器指定的区域、资源组和订阅。
使用转储和还原进行迁移
执行以下步骤,使用转储和还原方法来迁移数据库。
使用 mysqldump 命令将数据导出到另一个文件:
mysqldump -h [host name] -u [username] -p[password] [database name] > db_data.sql
此时,db_data.sql 是一个使用文本编辑器修改的 SQL 脚本。
在 Azure Database for MySQL 中创建目标数据库。 可通过 Azure CLI 完成此操作:
az mysql db create \ --name [database name] \ --server-name [server name] \ --resource-group [azure resource group]
使用 mysql 命令将数据导入到目标数据库:
mysql -h [host name] -u [username] -p[password] [database name] < db_data.sql
执行联机迁移
DMS 还支持联机迁移到 Azure Database for MySQL。 对于联机迁移,我们建议为目标灵活服务器选择常规用途的 16 vCore 计算,以加快迁移速度。 迁移完成后,根据下表中的详细信息重新缩减为目标服务器所需的计算大小。
单一服务器定价层 | 单一服务器 VCore 数 | 灵活服务器计算大小 | 灵活服务器计算层 |
---|---|---|---|
基本 | 1 | 可突发 | Standard_B1s |
基本 | 2 | 可突发 | Standard_B2s |
常规用途 | 4 | 常规用途 | Standard_D4ds_v4 |
常规用途 | 8 | 常规用途 | Standard_D8ds_v4 |
若要详细了解如何联机迁移到 Azure Database for MySQL,请参阅教程:通过 Azure 门户使用 DMS 将 Azure Database for MySQL 单一服务器联机迁移到灵活服务器。