使用 AWS SCT 转换数据库架构 - AWS Schema Conversion Tool

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 AWS SCT 转换数据库架构

您可以使用 AWS Schema Conversion Tool(AWS SCT)将现有的数据库架构从一个数据库引擎转换为另一个数据库引擎。使用 AWS SCT 用户界面转换数据库相当简单,但在进行转换之前还有一些方面需要考虑。

例如,您可以使用 AWS SCT 执行以下操作:

  • 您可以使用 AWS SCT 将现有本地数据库架构复制到运行相同引擎的 Amazon RDS 数据库实例。您可以使用此功能来分析迁移到云和更改许可证类型的潜在成本节省。

  • 在某些情况下,数据库功能无法转换为等效的 Amazon RDS 功能。如果您在 Amazon Elastic Compute Cloud (Amazon EC2) 平台上托管并自行管理数据库,则可通过替代 AWS 服务模拟这些功能。

  • AWS SCT 可自动执行将联机事务处理(OLTP)数据库架构转换为 Amazon Relational Database Service(Amazon RDS)MySQL 数据库实例、Amazon Aurora 数据库集群或 PostgreSQL 数据库实例的大部分过程。源数据库和目标数据库引擎包含许多不同的特性和功能,AWS SCT 尽可能尝试在您的 Amazon RDS 数据库实例中创建等效架构。如果无法直接转换,AWS SCT 会提供一个列表,其中包含可供您采取的操作。

AWS SCT 支持以下联机事务处理(OLTP)转换。

源数据库 目标数据库

IBM Db2 for z/OS(版本 12)

Amazon Aurora MySQL 兼容版本、Amazon Aurora PostgreSQL 兼容版本、MySQL、PostgreSQL

IBM Db2 LUW(版本 9.1、9.5、9.7、10.5、11.1 和 11.5)

Aurora MySQL、Aurora PostgreSQL、MariaDB、MySQL、PostgreSQL

Microsoft Azure SQL 数据库

Aurora MySQL、Aurora PostgreSQL、MySQL、PostgreSQL

Microsoft SQL Server(版本 2008 R2 及更高版本)

Aurora MySQL、Aurora PostgreSQL、适用于 Aurora PostgreSQL 的 Babelfish、MariaDB、Microsoft SQL Server、MySQL、PostgreSQL

MySQL(版本 5.5 及更高版本)

Aurora PostgreSQL、MySQL、PostgreSQL

您可以将架构和数据从 MySQL 迁移到 Aurora MySQL 数据库集群,而无需使用 AWS SCT。有关更多信息,请参阅将数据迁移到 Amazon Aurora 数据库集群

Oracle(版本 10.2 及更高版本)

Aurora MySQL、Aurora PostgreSQL、MariaDB、MySQL、Oracle、PostgreSQL

PostgreSQL(版本 9.1 及更高版本)

Aurora MySQL、Aurora PostgreSQL、MySQL、PostgreSQL

SAP ASE(12.5、15.0、15.5、15.7 和 16.0)

Aurora MySQL、Aurora PostgreSQL、MariaDB、MySQL、PostgreSQL

有关转换数据仓库架构的更多信息,请参阅 使用 AWS SCT 将数据仓库架构转换为 Amazon Redshift

要将数据库架构转换为 Amazon RDS,请执行以下概括步骤:

  • 在 AWS SCT 中创建迁移规则:使用 AWS SCT 转换架构之前,您可以设置以下操作的规则:更改列数据类型、将对象从一个架构复制到另一架构,以及更改对象名称。

  • 使用 AWS SCT 转换架构:AWS SCT 创建本地版本的转换后架构以供查看,但在您做好准备之前,不会将其应用于目标数据库实例。

  • 使用 AWS SCT 创建评估报告:AWS SCT 创建数据库迁移评估报告,详细介绍无法自动转换的架构元素。您可以使用此报告来确定需要在与源数据库兼容的 Amazon RDS 数据库实例中的哪个位置创建架构。

  • 在 AWS SCT 中处理手动转换:如果存在无法自动转换的架构元素,您有两种选择:更新源架构,然后再次转换;或者在目标 Amazon RDS 数据库实例中创建等效的架构元素。

  • 更新和刷新 AWS SCT 中的转换后的架构:您可以使用源数据库中的最新架构更新 AWS SCT 项目。

  • 保存和应用 AWS SCT 中的转换后架构:在您准备就绪后,可让 AWS SCT 将本地项目中的转换后的架构应用于目标 Amazon RDS 数据库实例。

在 AWS SCT 中创建迁移规则

在使用 AWS SCT 转换架构之前,您可以设置迁移规则。您可以在 AWS SCT 中设置以下操作的迁移规则:更改列数据类型、将对象从一个架构移动到另一架构以及更改对象名称。例如,假定您的源架构中有一组名为 test_TABLE_NAME 的表。您可以设置一条规则,将前缀 test_ 更改为目标架构中的前缀 demo_

注意

您只能为不同的源数据库引擎和目标数据库引擎创建迁移规则。

您可以创建执行以下任务的迁移规则:

  • 添加、删除或替换前缀

  • 添加、删除或替换后缀

  • 更改列排序规则

  • 更改数据类型

  • 更改 charvarcharnvarcharstring 数据类型的长度

  • 移动对象

  • 重命名对象

您可以为以下对象创建迁移规则:

  • 数据库

  • 架构

创建迁移规则

您可以创建迁移规则并将规则另存为项目的一部分。打开项目,使用以下过程创建迁移规则。

创建迁移规则
  1. 视图菜单上,选择映射视图

  2. 服务器映射中,选择一对源服务器和目标服务器。

  3. 选择新建迁移规则。此时显示转换规则对话框。

  4. 选择 Add new rule。规则列表中新增一行。

  5. 配置规则:

    1. 对于 Name(名称),请为规则输入一个名称。

    2. 对于 For,请选择该规则适用的对象的类型。

    3. 对于 where,请输入在应用迁移规则之前要应用于对象的筛选器。通过使用 LIKE 子句对 WHERE 子句进行评估。您可以输入一个确切名称以选择一个对象,也可以输入一种模式来选择多个对象。

      适用于 WHERE 子句的字段有所不同,具体取决于对象类型。例如,如果对象类型为架构,则只有一个字段可用于架构名称。

    4. 对于操作,选择要创建的迁移规则的类型。

    5. 根据规则类型,输入一个或两个其他值。例如,要重命名对象,请输入对象的新名称。要替换前缀,请输入旧前缀和新前缀。

      对于 char、varchar、nvarchar 和字符串数据类型,您可以使用乘法运算符更改数据类型长度。例如,%*4 值会将 varchar(10) 数据类型转换为 varchar(40)

  6. 配置迁移规则后,请选择保存以保存您的规则。您也可以选择 Cancel 取消所做更改。

    
                            “转换规则”对话框
  7. 添加、编辑和删除完规则后,选择 Save All 以保存您的所有更改。

  8. 选择关闭以关闭转换规则对话框。

您可以使用切换图标关闭迁移规则,而不将其删除。您可以使用复制图标复制现有的迁移规则。您可以使用铅笔图标编辑现有的迁移规则。您可以使用删除图标来删除现有的迁移规则。要保存对迁移规则所做的所有更改,请选择全部保存

导出迁移规则

如果您使用 AWS DMS 将数据从源数据库迁移到目标数据库,则可向 AWS DMS 提供有关迁移规则的信息。有关任务的更多信息,请参阅处理 AWS Database Migration Service 复制任务

导出迁移规则
  1. 在 AWS Schema Conversion Tool 中,在视图菜单上选择映射视图

  2. 迁移规则中,选择迁移规则,然后选择修改迁移规则

  3. 选择导出 AWS DMS 脚本

  4. 浏览到要保存脚本的位置,然后选择 Save。迁移规则另存为可由 AWS DMS 使用的 JSON 脚本。

使用 AWS SCT 转换架构

将项目连接到源数据库和目标 Amazon RDS 数据库实例后,您的 AWS Schema Conversion Tool 项目会在左侧面板中显示源数据库中的架构。该架构以树状图格式显示,且树的每个节点均延迟加载。如果您选择树状图中的节点,AWS SCT 会在这个时候要求您的源数据库提供架构信息。

您可以从您的源数据库中选择架构项目,然后将该架构转换为目标数据库实例的数据库引擎的等效架构。您可以从源数据库中选择要转换的任何架构项目。如果您选择的架构项取决于父项,则 AWS SCT 还会为该父项生成架构。例如,假定您选择了要转换的表。如果是这样,AWS SCT 会生成表的架构以及该表所在的数据库。

转换架构

要转换源数据库中的架构,请选中要转换的架构名称对应的复选框。接下来,从项目的左侧面板中选择此架构。AWS SCT 用蓝色突出显示架构名称。打开该架构的上下文(右键单击)菜单,然后选择转换架构,如下所示。


                    转换架构

转换完源数据库的架构后,您可以从项目左侧面板中选择架构项目,并在项目的中心面板中查看转换后的架构。中下方面板显示转换后架构的属性以及创建该架构所用的 SQL 命令,如下所示。


                    选择源架构项

转换完架构后,您可以保存您的项目。源数据库中的架构信息随您的项目一起保存。此功能意味着您无需连接到源数据库即可脱机工作。如果为源数据库选择从数据库刷新,则 AWS SCT 会连接到源数据库以更新项目中的架构。有关更多信息,请参阅更新和刷新 AWS SCT 中的转换后的架构

您可以为无法自动转换的项目创建一个数据库迁移评估报告。该评估报告对于识别和解析无法自动转换的架构项目很有用。有关更多信息,请参阅使用 AWS SCT 创建评估报告

当 AWS SCT 生成转换后的架构时,不会立即将其应用于目标数据库实例。而是会将转换后的架构存储在本地,直到您准备好将其应用于目标数据库实例。有关更多信息,请参阅应用转换后的架构

编辑转换后的架构

您可以编辑转换后的架构,并将更改另存为项目的一部分。

编辑转换后的架构
  1. 在显示源数据库架构的左侧面板中,选择要为其编辑转换后架构的架构项目。

  2. 在显示所选项目的转换后架构的中下方面板中,选择 SQL 选项卡。

  3. SQL 选项卡显示的文本中,根据需要更改架构。该架构会在您进行更新时自动随项目一起保存。

    
                            从目标数据库实例刷新架构

您对转换后架构的更改会在您进行更新时随项目一起存储。如果您刚从源数据库转换一个架构项目,并且已对该项目之前转换的架构进行了更新,则这些现有更新将替换为基于源数据库的新转换的架构项目。

清除转换后的架构

在您将架构应用于目标数据库实例之前,AWS SCT 将转换后的架构仅存储在本地的项目中。您可以通过选择目标数据库实例的树状图节点,然后选择从数据库刷新清除您项目中的计划架构。由于尚未向目标数据库实例中写入架构,从数据库刷新会删除 AWS SCT 项目中的计划架构元素,以便与源数据库实例中的现有元素相匹配。

在 AWS SCT 中处理手动转换

评估报告包含无法自动转换为目标 Amazon RDS 数据库实例的数据库引擎的项列表。对于无法转换的每一项,Action Items 选项卡上都有一个操作项。

您可以按如下方式应对评估报告中的操作项:

  • 修改您的源数据库架构。

  • 修改您的目标数据库架构。

修改源架构

对于某些项目,将源数据库中的数据库架构修改为可自动转换的架构可能更容易。首先验证新更改与您的应用程序架构兼容,然后更新源数据库中的架构。最后,用更新的架构信息刷新您的项目。然后,您可以转换更新后的架构,并生成新的数据库迁移评估报告。对于在源架构中更改的项目,不再显示操作项。

此过程的优势是,当您从源数据库刷新时,更新后的架构始终可用。

修改目标架构

对于某些项目,更容易的方法可能是将转换后的架构应用于目标数据库,然后手动将无法自动转换的项目的等效架构项目添加到目标数据库。您可以编写所有可通过应用该架构自动转换为目标数据库实例的架构。有关更多信息,请参阅保存和应用 AWS SCT 中的转换后架构

写入到目标数据库实例的架构不包含无法自动转换的项目。在将架构应用于目标数据库实例后,您就可以在目标数据库实例中手动创建与源数据库中的架构等效的架构。数据库迁移评估报告中的操作项包含有关如何创建等效架构的建议。

警告

如果您在目标数据库实例中手动创建构架,请保存所做的所有手动操作的副本。如果再次将您的项目的转换后架构应用于目标数据库实例,它将覆盖您所做的手动操作。

在某些情况下,您无法在目标数据库实例中创建等效架构。您可能需要重新架构一部分应用程序和数据库,以便将该数据库引擎的可用功能用于您的目标数据库实例。在其他情况下,您可以简单地忽略无法自动转换的架构。

更新和刷新 AWS SCT 中的转换后的架构

您可以更新 AWS Schema Conversion Tool 项目中的源架构和目标架构。

  • :如果您更新源数据库的架构,AWS SCT 将用源数据库中的最新架构代替项目中的架构。如果您已对源数据库的架构进行了更改,则可使用此功能来更新项目。

  • 目标:如果您更新目标 Amazon RDS 数据库实例的架构,AWS SCT 将用目标数据库实例中的最新架构代替项目中的架构。如果您尚未将任何架构应用于目标数据库实例,AWS SCT 将从您的项目中清除转换后的架构。然后,您可以转换源数据库中的架构,以获得干净的目标数据库实例。

您可以通过选择从数据库刷新更新 AWS SCT 项目中的架构。

注意

刷新架构时,AWS SCT 仅在需要时加载元数据。要完全加载数据库的所有架构,请打开该架构的上下文(右键单击)菜单,然后选择加载架构。例如,您可以使用此选项一次性加载数据库的元数据,然后脱机工作。

保存和应用 AWS SCT 中的转换后架构

当 AWS Schema Conversion Tool 生成转换后的架构(如 使用 AWS SCT 转换架构 中所示)后,不会立即将转换后的架构应用于目标数据库实例。而是会在本地将转换后的架构存储在项目中,直到您准备好将其应用于目标数据库实例。使用此功能,您可以使用无法自动转换为目标数据库引擎的架构项目。有关无法自动转换的项目的更多信息,请参阅使用 AWS SCT 创建评估报告

您可以选择在将架构应用于目标数据库实例之前,让该工具将转换后的架构作为 SQL 脚本保存到文件中。此外,您还可以让该工具将转换后的架构直接应用于目标数据库实例。

将转换后的架构保存到文件中

您可以将转换后的架构作为 SQL 脚本保存到一个文本文件中。使用此方法,您可以将 AWS SCT 中生成的 SQL 脚本修改为该工具无法自动转换的地址项。然后,您可以在目标数据库实例上运行更新的脚本,将转换后的架构应用于目标数据库。

将转换后的架构另存为 SQL 脚本
  1. 选择架构,并打开上下文 (右键单击) 菜单。

  2. 选择另存为 SQL

  3. 输入文件名并选择保存

  4. 使用以下选项之一保存转换后的架构:

    • 单个文件

    • 每个阶段单个文件

    • 每个语句单个文件

选择 SQL 脚本的格式
  1. 设置菜单上,选择项目设置

  2. 选择保存脚本

  3. 对于供应商,选择数据库平台。

  4. 将 SQL 脚本保存到中,选择数据库架构脚本的保存方式。

  5. 选择确定保存设置。

应用转换后的架构

在您准备好将转换后的架构应用于目标 Amazon RDS 数据库实例后,请从项目的右侧面板中选择该架构元素。打开架构元素的上下文 (右键单击) 菜单,然后选择 Apply to database,如下所示。


                    应用于数据库

扩展包架构

首次将转换后的架构应用于目标数据库实例时,AWS SCT 会向目标数据库实例添加一个额外的架构。该架构用于实现将转换后的架构写入到目标数据库实例时必需的源数据库的系统功能。该架构称为扩展包架构。

不要修改扩展包架构,否则,您可能会在写入到目标数据库实例的转换后架构中遇到意外结果。将架构完全迁移到目标数据库实例后,就不再需要 AWS SCT 了,您可以删除该扩展包架构。

扩展包架构按照您的源数据库命名,如下所示:

  • IBM Db2 LUW:aws_db2_ext

  • Microsoft SQL Server: aws_sqlserver_ext

  • MySQL:aws_mysql_ext

  • Oracle:aws_oracle_ext

  • PostgreSQL: aws_postgresql_ext

  • SAP ASE:aws_sapase_ext

有关更多信息,请参阅使用 AWS SCT 扩展包中的 AWS Lambda 函数