使用导入和导出迁移 MySQL 数据库

备注

将要查看的是 Azure Database for MySQL 的新服务。 若要查看经典 MySQL Database for Azure 的文档,请访问此页

本文介绍通过使用 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 的“概述”窗格中的连接信息。

    Azure 门户中 Azure Database for MySQL 服务器的连接信息的屏幕截图。

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

    MySQL Workbench 连接字符串的屏幕截图。

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

提示

对于要转储和还原整个数据库的场景,应改用转储和还原方法。

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

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

重要

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 导出和导入向导命令的屏幕截图。

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

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

表数据导出向导

要将表导出到 CSV 文件:

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

表数据导入向导

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

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

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

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

导出数据

使用“导航器”窗格显示 MySQL Workbench 中的“数据导出窗格”的屏幕截图。

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

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

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

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

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

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

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

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

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

导入数据

使用“导航器”窗格显示 MySQL Workbench 中的“数据导入窗格”的屏幕截图。

可以使用“数据导入”窗格从数据导出操作或从 mysqldump 命令中导入或还原导出的数据。

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

后续步骤