使用导入和导出迁移 Azure Database for MySQL 灵活服务器数据库

适用于: Azure Database for MySQL 单一服务器 Azure Database for MySQL 灵活服务器

重要

Azure Database for MySQL 单一服务器即将停用。 强烈建议升级到 Azure Database for MySQL 灵活服务器。 有关如何迁移到 Azure Database for MySQL 灵活服务器的详细信息,请参阅 Azure Database for MySQL 单一服务器发生了什么情况?

本文介绍通过使用 MySQL Workbench 将数据导入和导出到 Azure Database for MySQL 灵活服务器实例的两种常用方法。

有关详细全面的迁移指导,请参阅迁移指南资源

有关其他迁移方案,请参阅数据库迁移指南

先决条件

在开始迁移 MySQL 数据库之前,需要:

在 Azure Database for MySQL 灵活服务器实例上创建数据库

使用 MySQL Workbench、Toad 或 Navicat 在 Azure Database for MySQL 灵活服务器实例上创建一个空数据库。 数据库名称可与包含转储数据的数据库名称相同,或可以创建一个不同名称的数据库。

若要建立连接,请执行以下操作:

  1. 在 Azure 门户中,查找 Azure Database for MySQL 灵活服务器实例的“概述”窗格中的连接信息

    Screenshot of the Azure Database for MySQL flexible server instance connection information in the Azure portal.

  2. 将连接信息添加到 MySQL Workbench。

    Screenshot of the MySQL Workbench connection string.

确定何时使用导入和导出技术

提示

如果你要转储和还原整个数据库,请改用转储和还原方法。

对于以下情况,请使用 MySQL 工具将数据库导入和导出到 Azure MySQL 数据库中。 有关其他工具,请参阅 MySQL 到 Azure 数据库迁移指南的“迁移方法”部分(第 22 页)。

  • 需要有选择性地选择要从现有 MySQL 数据库导入到 Azure Database for MySQL 灵活服务器数据库的几个表时,最好使用导入和导出技术。 这样做,可以在迁移过程中省略任何不需要的表,从而节省时间和资源。 例如,将 --include-tables--exclude-tables 开关与 mysqlpump 配合使用,以及将 --tables 开关与 mysqldump 配合使用。
  • 移动除表以外的数据库对象时,请显式创建这些对象。 包含约束(主键、外键和索引)、视图、函数、过程、触发器和想要迁移的任何其他数据库对象。
  • 从 MySQL 数据库以外的外部数据源迁移数据时,使用 mysqlimport 创建平面文件并导入它们。

重要

Azure Database for MySQL 单一服务器和 Azure Database for MySQL 灵活服务器均仅支持 InnoDB 存储引擎。 将数据加载到 Azure Database for MySQL 灵活服务器实例时,请确保数据库中的所有表都使用 InnoDB 存储引擎。

如果源数据库使用其他存储引擎,请在迁移数据库之前将其转换为 InnoDB 引擎。 例如,如果你有使用 MyISAM 引擎的 WordPress 或 Web 应用,需首先通过将数据迁移到 InnoDB 表中的方式来转换表。 使用子句 ENGINE=INNODB 设置用于创建表的引擎,然后在迁移之前将数据传输到兼容表中。

INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns

导入和导出的性能建议

为了获得最佳的数据导入和导出性能,我们建议执行以下操作:

  • 在加载数据之前创建聚集索引和主键。 按主键顺序加载数据。
  • 延迟创建辅助索引,直到数据加载完毕之后。
  • 在加载数据之前禁用外键约束。 禁用外键检查可以显著提高性能。 启用约束并在加载后验证数据,确保引用完整性。
  • 并行加载数据。 避免太多将导致达到资源限制的并行度,并通过使用 Azure 门户中提供的指标监视资源。
  • 适当时使用已分区表。

使用 MySQL Workbench 导入和导出数据

可以在 MySQL Workbench 中通过两种方法导出和导入数据:从对象浏览器上下文菜单,或者从“导航器”窗格。 每种方法的用途不同。

注意

如果要在 MySQL Workbench 上添加与 Azure Database for MySQL 单一服务器或 Azure Database for MySQL 灵活服务器的连接,请执行以下操作:

  • 对于 Azure Database for MySQL 单一服务器,请确保用户名采用 <username@servername> 格式
  • 对于 Azure Database for MySQL 灵活服务器,仅使用 <username>。 如果使用 <username@servername> 进行连接,连接将会失败。

通过对象浏览器上下文菜单运行表数据导出和导入向导

Screenshot of the MySQL Workbench export and import wizard commands on the object browser's context menu.

表数据向导支持使用 CSV 和 JSON 文件执行导入和导出操作。 向导中包括多个配置选项,如分隔符、列选择和编码选择。 可以对本地或远程连接的 MySQL 服务器运行每个向导。 导入操作包括表、列和类型映射。

若要从对象浏览器上下文菜单访问这些向导,请右键单击某个表,然后选择“表数据导出向导”或“表数据导入向导” 。

表数据导出向导

若要将表导出到 CSV 文件,请执行以下操作:

  1. 右键单击要导出的数据库的表。
  2. 选择“表数据导出向导”。 选择要导出的列、行偏移量(如果存在)、计数(如果存在)。
  3. 在“选择要导出的数据”窗格中,选择“下一步” 。 选择文件路径、CSV 或 JSON 文件类型。 此外选择行分隔符、封闭字符串的方法和字段分隔符。
  4. 在“选择输出文件位置”窗格中,选择“下一步” 。
  5. 在“导出数据”窗格中,选择“下一步” 。

表数据导入向导

若要从 CSV 文件中导入表,请执行以下操作:

  1. 右键单击要导入的数据库的表。
  2. 找到并选择要导入的 CSV 文件,然后选择“下一步”。
  3. 选择目标表(新的或现有的),选中或清除“导入前截断表”复选框,然后选择“下一步” 。
  4. 选择编码和要导入的列,然后选择“下一步”。
  5. 在“导入数据”窗格中,选择“下一步” 。 向导将导入数据。

从“导航器”窗格运行 SQL 数据导出和导入向导

使用向导导出或导入从 MySQL Workbench 或从 mysqldump 命令生成的 SQL 数据。 可以从“导航器”窗格访问向导,也可以从主菜单中选择“服务器” 。

导出数据

Screenshot of using the Navigator pane to display the Data Export pane in MySQL Workbench.

可以使用“数据导出”窗格导出 MySQL 数据。

  1. 在 MySQL Workbench 的“导航器”窗格中,选择“数据导出” 。

  2. 在“数据导出”窗格中,选择要导出的每个架构。

    对于每个架构,可以选择要导出的特定架构对象或表。 配置选项包括导出到项目文件夹或自包含的 SQL 文件、转储存储的例程和事件,或跳过表数据。

    或者,使用“导出结果集”将 SQL 编辑器中的特定结果集导出为其他格式,例如 CSV、JSON、HTML 和 XML。

  3. 选择要导出的数据库对象,并配置相关选项。

  4. 选择“刷新”加载当前对象。

  5. (可选)选择右上角的“高级选项”以完善导出操作。 例如,添加表锁、使用 replace 而不是 insert 语句、使用反撇号字符将标识符括起来。

  6. 选择“开始导出”开始导出过程。

导入数据

Screenshot of using the Navigator pane to display the Data Import pane in MySQL Workbench.

可以使用“数据导入”窗格来导入或者还原通过数据导出操作或 mysqldump 命令导出的数据。

  1. 在 MySQL Workbench 的“导航器”窗格中,选择“数据导入/还原”。
  2. 选择项目文件夹或自包含的 SQL 文件、选择要导入到的架构,或选择“新建”按钮定义新架构。
  3. 选择“开始导入”开始导入过程。

后续步骤