MySQL Workbench 手册  /  ...  /  执行数据库迁移的可视化指南

10.2.1 执行数据库迁移的可视化指南

本示例将 Microsoft SQL Server 数据库迁移到 MySQL,并包含每个步骤的图像。

在 MySQL Workbench 中,选择“数据库”,然后选择“迁移”以打开迁移向导并显示迁移向导概述(参见下图)。

概述

图 10.2 MySQL Workbench 迁移:概述

Content is described in the surrounding text.

它描述了在继续操作之前应该了解的先决条件和要求。“打开 ODBC 管理器”选项将加载 odbcad32.exe,用于确认是否安装了 SQL Server 的 ODBC 驱动程序,以及在需要时进行配置更改。

单击“开始迁移”继续。

源选择

选择要迁移到 MySQL 的源 RDBMS。选择要迁移的“数据库系统”,其他连接参数将相应更改。下图显示了连接会话的示例。

图 10.3 MySQL Workbench 迁移:源选择(参数)

Content is described in the surrounding text.

目标选择

目标是将包含新迁移数据库的 MySQL 数据库(参见下图)。当前的 Workbench MySQL 连接将在此处可用,或者您可以选择“管理数据库连接”来创建新连接。

图 10.4 MySQL Workbench 迁移:目标选择

Content is described in the surrounding text.

获取架构列表

从源 RDBMS 和目标 RDBMS 中检索架构列表(参见下图)。这是一个自动化和信息步骤,用于报告与连接相关的错误和/或常规日志信息。单击“下一步”继续。

图 10.5 MySQL Workbench 迁移:获取架构列表

Content is described in the surrounding text.

架构选择

选择要迁移的架构。

迁移 Microsoft SQL Server 时的“架构名称映射方法”选项

  • 保持架构不变:Catalog.Schema.Table -> Schema.Table:这将创建多个数据库,每个架构一个。

  • 只有一个架构:Catalog.Schema.Table -> Catalog.Table:将每个架构合并到一个数据库中。下图显示了此映射方法的示例。

  • 只有一个架构,将当前架构名称保留为前缀:Catalog.Schema.Table -> Catalog.Schema_table:将架构名称保留为前缀。

图 10.6 MySQL Workbench 迁移:架构选择

Content is described in the surrounding text.

逆向工程源

从源 RDBMS 中获取源元数据,然后对其进行逆向工程。这是一个自动化和信息步骤,用于报告相关错误、常规日志信息或两者兼有(参见下图)。查看日志,然后单击“下一步”继续。

图 10.7 MySQL Workbench 迁移:逆向工程源

Content is described in the surrounding text.

源对象

“逆向工程源”阶段发现的对象将显示并可用。如下图所示,结果包括表、视图和例程对象,默认情况下仅选择表对象。

图 10.8 MySQL Workbench 迁移:源对象

Content is described in the surrounding text.

迁移

迁移过程现在将选定的对象转换为与 MySQL 兼容的对象(参见下图)。查看日志,然后继续。

图 10.9 MySQL Workbench 迁移:迁移

Content is described in the surrounding text.

手动编辑

有三个部分可以编辑,可以使用右上角的“视图”选择框进行选择。“显示代码和消息”按钮在每个视图中都可用,它将显示与所选对象相对应的生成的 MySQL 代码。

  • “迁移问题”:这将报告问题或显示“未找到映射问题”。这是一个信息屏幕。下图显示了此类消息的示例。

    图 10.10 MySQL Workbench 迁移:手动编辑(迁移问题)

    Content is described in the surrounding text.

  • “所有对象”:一个对象视图,允许您查看和编辑对象定义。双击一行以修改目标对象的名称。下图显示了此类消息的示例。

    图 10.11 MySQL Workbench 迁移:手动编辑(所有对象)

    Content is described in the surrounding text.

  • “列映射”:显示所有表列映射,并允许您单独查看和修复所有列类型、默认值和其他属性的映射。下图显示了此类消息的示例。

    图 10.12 MySQL Workbench 迁移:手动编辑(列映射)

    Content is described in the surrounding text.

目标创建选项

可以通过将架构添加到目标 RDBMS、创建 SQL 脚本文件或两者兼用来创建架构。下图显示了目标创建选项。

图 10.13 MySQL Workbench 迁移:目标创建选项

Content is described in the surrounding text.

创建架构

现在创建架构(参见下图)。完整的日志也在这里可用。

图 10.14 MySQL Workbench 迁移:创建架构

Content is described in the surrounding text.

创建目标结果

下图列出了本示例中生成的对象,以及错误消息(如果有)。

也可以在此处查看和编辑迁移代码。要进行更改,请选择一个对象,编辑查询代码,然后单击“应用”。对要编辑的每个对象重复此过程。最后,单击“重新创建对象”以保存结果。

注意

需要执行“重新创建对象”操作才能保存此处所做的任何更改。然后,它将使用修改后的代码执行上一步迁移步骤(“创建架构”),然后继续迁移过程。这也意味着先前保存的架构将被删除。

图 10.15 MySQL Workbench 迁移:创建目标结果

Content is described in the surrounding text.

数据传输设置

下一步是将数据从源 RDBMS 传输到目标 MySQL 数据库。设置屏幕包括以下选项

数据复制:

  • “将表数据在线复制到目标 RDBMS”:此方法(默认)会将数据复制到目标 RDBMS。

  • “创建批处理文件以在其他时间复制数据”:数据也可以转储到文件中,该文件可以在以后执行,或用作备份。此脚本使用 MySQL 连接来传输数据。

  • “创建 Shell 脚本来使用本机服务器转储和加载功能以进行快速迁移”:与执行实时在线复制的简单批处理文件不同,这会生成一个要在源主机上执行的脚本,然后生成一个 Zip 文件,其中包含在目标主机上本地迁移数据所需的所有数据和信息。在目标主机上复制并解压缩生成的 Zip 文件,然后执行导入脚本(在目标主机上),以使用 LOAD DATA 调用将数据导入 MySQL。

    这种更快的方法避免了需要通过 MySQL Workbench 传输所有数据,或者需要在 MySQL 服务器之间建立永久网络连接。

    注意

    此选项已在 MySQL Workbench 6.3.0 中添加。

选项(有关示例,请参见下图)

  • 在复制数据之前截断目标表:如果目标数据库已存在,这将删除所述数据。

  • 工作线程任务:默认值为 2。这是复制数据时使用的任务(数据库连接)数量。

  • 为表复制启用调试输出:显示调试信息。

图 10.16 MySQL Workbench 迁移:数据传输设置

Content is described in the surrounding text.

批量数据传输

根据所选的选项,这将把数据传输到目标 RDMS(默认)、生成用于在线数据传输的简单脚本,或者生成要在源主机上执行的脚本,然后生成一个 Zip 文件,其中包含要在目标主机上执行的传输脚本和数据。或者,查看日志以确认(参见下图)。

图 10.17 MySQL Workbench 迁移:批量数据传输

Content is described in the surrounding text.

迁移报告

最后,迁移报告可用,并总结了整个迁移过程,如下图所示。

图 10.18 MySQL Workbench 迁移:迁移报告

Content is described in the surrounding text.

单击“完成”将关闭迁移窗口。如果您选择了在线复制,那么现在可以在 MySQL Workbench SQL 编辑器中查看数据库,如下图所示。

图 10.19 MySQL Workbench 迁移:查看迁移的数据库

Content is described in the surrounding text.

注意

如果 MySQL Workbench SQL 编辑器选项卡已打开,则必须刷新对象浏览器中的架构列表才能查看新导入的架构。