使用 Babelfish 迁移到 PostgreSQL - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Babelfish 迁移到 PostgreSQL

对于 Aurora PostgreSQL,您可以使用 Babelfish 可以简化从 SQL Server 数据库迁移到 Amazon Aurora PostgreSQL 数据库集群的过程。在迁移之前,请查看 将 Babelfish 与单个数据库或多个数据库结合使用

以下高级概述列出了使 SQL Server 应用程序与 Babelfish 配合使用所需的步骤:

  1. 在打开 Babelfish 的情况下创建一个新的 Aurora PostgreSQL 数据库集群,为 SQL Server T-SQL 语法和功能提供支持。有关详细信息,请参阅使用 Babelfish 创建 Aurora PostgreSQL 集群

  2. 要连接到新数据库,请使用本机 SQL Server 工具,例如 sqlcmd。有关详细信息,请参阅使用 SQL Server 客户端连接到数据库集群

  3. 导出要迁移的 SQL Server 数据库的数据定义语言 (DDL)。DDL 是一种 SQL 代码,用于描述包含用户数据(如表、索引和视图)和用户编写的数据库代码(例如存储过程、用户定义的函数和触发器)的数据库对象。

    您可以使用 SQL Server Management Studio (SSMS) 导出 DDL。连接到现有 SQL Server 实例后,请完成以下步骤:

    1. 打开数据库名称的上下文菜单(右键单击)。

    2. 从上下文菜单中选择 Tasks(任务)、Generate Scripts(生成脚本)。

    3. Choose Objects(选择对象)页面中,选择整个数据库或特定对象。

    4. Set Scripting Options(设置脚本选项)页面上,选择 Advanced(高级)并确保打开触发器、登录名、拥有者和权限。预设情况下,SSMS 中将关闭这些选项。

    5. 保存脚本。

  4. 导出要迁移的 SQL Server 数据库的数据操作语言 (DML)。DML 是将行插入到数据库中的表中的 SQL 代码。

    您可以使用 SQL Server Management Studio (SSMS) 导出 DML。连接到现有 SQL Server 实例后,请完成以下步骤:

    1. 打开数据库名称的上下文(右键单击)菜单。

    2. 从上下文菜单中选择 Tasks(任务)、Generate Scripts(生成脚本)。

    3. Choose Objects(选择对象)页面中,选择整个数据库或特定对象。

    4. Set Scripting Options(设置脚本选项)页面上,选择 Advanced(高级),对于 Types of data to script(要编写脚本的数据类型),选择 Data only(仅限数据)。

    5. 保存脚本。

  5. 运行评估工具。例如,您可以运行 Babelfish Compass 工具。您可以在 DDL 上运行此工具来确定 Babelfish 在多大程度上支持 T-SQL 代码。确定在 Babelfish 上运行之前可能需要修改的 T-SQL 代码。

    注意

    由于 Babelfish Compass 是一种开源工具,请通过 GitHub 报告任何问题。不要将 Babelfish Compass 的问题报告给 Amazon Support。

    您也可以使用 Amazon Schema Conversion Tool 帮助自己进行迁移。Amazon Schema Conversion Tool 支持 Babelfish 作为虚拟目标。若要了解详情,请参阅《Amazon Schema Conversion Tool 用户指南》中的使用虚拟目标

  6. 在您的新 Babelfish 服务器上运行 DDL,以使用 SSMS 或 sqlcmd 在 Babelfish 上重新创建您的架构。根据需要,调整代码。此过程可能需要多次迭代。

  7. 在新的 Babelfish 服务器上运行 DML,以将行插入到数据库中的表中。

  8. 重新配置客户端应用程序以连接到 Babelfish 端点而不是 SQL Server。有关详细信息,请参阅在打开 Babelfish 的情况下连接到数据库集群

  9. 必要时修改应用程序并重新测试。有关更多信息,请参阅 带有 Babelfish 的 Aurora PostgreSQL 与 SQL Server 之间的区别

  10. 当您对应用程序测试结果感到满意时,开始使用 Babelfish 数据库进行生产。

    准备就绪后,停止原始数据库并将实时客户端应用程序重新导向到使用 Babelfish TDS 端口。

  11. (可选)捕获客户端 SQL 查询,然后通过评估工具(例如 Babelfish Compass)运行这些查询。逆向工程架构只能转换服务器端 SQL 代码。对于具有复杂客户端 SQL 查询的应用程序,我们建议您也分析这些查询以了解 Babelfish 的兼容性。如果分析表明客户端 SQL 语句包含不受支持的 SQL 功能,请查看客户端应用程序中的 SQL 方面,并在必要时进行修改。