使用 Babelfish 迁移到 PostgreSQL
对于 Aurora PostgreSQL,您可以使用 Babelfish 可以简化从 SQL Server 数据库迁移到 Amazon Aurora PostgreSQL 数据库集群的过程。在迁移之前,请查看 将 Babelfish 与单个数据库或多个数据库结合使用。
以下高级概述列出了使 SQL Server 应用程序与 Babelfish 配合使用所需的步骤:
-
在打开 Babelfish 的情况下创建一个新的 Aurora PostgreSQL 数据库集群,为 SQL Server T-SQL 语法和功能提供支持。有关详细信息,请参阅使用 Babelfish 创建 Aurora PostgreSQL 集群。
-
要连接到新数据库,请使用本机 SQL Server 工具,例如 sqlcmd
。有关详细信息,请参阅使用 SQL Server 客户端连接到数据库集群。 -
导出要迁移的 SQL Server 数据库的数据定义语言 (DDL)。DDL 是一种 SQL 代码,用于描述包含用户数据(如表、索引和视图)和用户编写的数据库代码(例如存储过程、用户定义的函数和触发器)的数据库对象。
您可以使用 SQL Server Management Studio (SSMS) 导出 DDL。连接到现有 SQL Server 实例后,请完成以下步骤:
-
打开数据库名称的上下文菜单(右键单击)。
-
从上下文菜单中选择 Tasks(任务)、Generate Scripts(生成脚本)。
-
在 Choose Objects(选择对象)页面中,选择整个数据库或特定对象。
-
在 Set Scripting Options(设置脚本选项)页面上,选择 Advanced(高级)并确保打开触发器、登录名、拥有者和权限。预设情况下,SSMS 中将关闭这些选项。
-
保存脚本。
-
-
导出要迁移的 SQL Server 数据库的数据操作语言 (DML)。DML 是将行插入到数据库中的表中的 SQL 代码。
您可以使用 SQL Server Management Studio (SSMS) 导出 DML。连接到现有 SQL Server 实例后,请完成以下步骤:
-
打开数据库名称的上下文(右键单击)菜单。
-
从上下文菜单中选择 Tasks(任务)、Generate Scripts(生成脚本)。
-
在 Choose Objects(选择对象)页面中,选择整个数据库或特定对象。
-
在 Set Scripting Options(设置脚本选项)页面上,选择 Advanced(高级),对于 Types of data to script(要编写脚本的数据类型),选择 Data only(仅限数据)。
-
保存脚本。
-
-
运行评估工具。例如,您可以运行 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 用户指南》中的使用虚拟目标。
-
在您的新 Babelfish 服务器上运行 DDL,以使用 SSMS 或
sqlcmd在 Babelfish 上重新创建您的架构。根据需要,调整代码。此过程可能需要多次迭代。 -
在新的 Babelfish 服务器上运行 DML,以将行插入到数据库中的表中。
-
重新配置客户端应用程序以连接到 Babelfish 端点而不是 SQL Server。有关详细信息,请参阅在打开 Babelfish 的情况下连接到数据库集群。
必要时修改应用程序并重新测试。有关更多信息,请参阅 带有 Babelfish 的 Aurora PostgreSQL 与 SQL Server 之间的区别。
当您对应用程序测试结果感到满意时,开始使用 Babelfish 数据库进行生产。
准备就绪后,停止原始数据库并将实时客户端应用程序重新导向到使用 Babelfish TDS 端口。
-
(可选)捕获客户端 SQL 查询,然后通过评估工具(例如 Babelfish Compass)运行这些查询。逆向工程架构只能转换服务器端 SQL 代码。对于具有复杂客户端 SQL 查询的应用程序,我们建议您也分析这些查询以了解 Babelfish 的兼容性。如果分析表明客户端 SQL 语句包含不受支持的 SQL 功能,请查看客户端应用程序中的 SQL 方面,并在必要时进行修改。