AWS数据库迁移与转换工具全解析
立即解锁
发布时间: 2025-08-22 01:50:58 阅读量: 2 订阅数: 3 


AWS Certified Database Specialist Exam Prep
### AWS 数据库迁移与转换工具全解析
在数据库管理与迁移的领域中,AWS 提供了强大的工具来帮助我们完成数据库的评估、转换和迁移工作。本文将详细介绍 AWS Schema Conversion Tool(SCT)和 AWS Database Migration Service(DMS)的使用方法和相关要点。
#### SCT 权限与多服务器评估
SCT 在所有源数据库上需要特定的只读权限。若在连接时遇到问题,或者 SCT 报告中出现数据访问错误,你应该检查所使用的用户账户是否具有正确的权限,详细信息可参考:[https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.html](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.html)。
除了支持加密功能外,SCT 还允许同时评估大量服务器。如果你有多个数据库或者需要一次性评估一组数据库,这将非常有用。以下是进行多服务器评估的相关内容。
多服务器评估允许你将多个数据库的详细信息传递给 SCT 进行同时评估。SCT 会为所有范围内的数据库服务器和模式生成一个汇总报告,让你快速了解整体情况。
多服务器评估器要求以特定格式的 CSV 文件将数据库详细信息传递给 SCT。以下是一个示例文件:
```
Name,Description,Server IP,Port,Service Name,SID,Source Engine,Schema Names,Login,Password,Target Engines
ORACLE_DMS_SAMPLE, TEST_APP,10.103.56.32,1521, ORCL1, ,ORACLE,DMS_TEST,SYS,password,ORACLE;AURORA POSTGRESQL
MS_SQL_Server_DB, DEV2,67.17.93.164,1433, , ,MSSQL,northwinds.dbo;northwinds.reporting,reporting_user,password,MSSQL;POSTGRESQL
```
从这个示例可以看出,并非每个列都是必需的,文件允许为空。如果未提供端口,SCT 将尝试使用数据库引擎公布的默认端口。同时,一些字段允许使用分号 `;` 分隔多个值,这样你可以在一行中为每个数据库定义多个模式,以及多个目标引擎类型。
需要注意的是,你请求评估的模式和目标数据库引擎越多,评估所需的时间就越长。如果你请求评估所有可能的目标数据库引擎,并且使用的是标准个人计算机,单个数据库模式的评估时间可能超过 24 小时。如果需要,可以将 SCT 安装在计算能力更强的服务器上以加快评估速度。
#### 使用 SCT 转换数据库
在学习了如何使用 SCT 评估数据库以进行潜在的数据库引擎转换后,接下来了解如何使用 SCT 将数据库转换为目标数据库。
完成评估并确定目标数据库后,你可以使用 SCT 协助转换数据库对象和代码。SCT 会执行以下任务:
1. **安装扩展包**:SCT 会安装一个包含常用函数的扩展包,这些函数可用于转换后的数据库代码。该扩展包包含在 SCT 程序中。
2. **检查并重建 DDL 语句**:SCT 会检查源数据库中的所有 DDL 语句,并尝试以目标数据库的语言重新创建它们,包括表、视图、索引等。
3. **转换数据库代码**:SCT 会尝试将数据库代码转换为目标数据库的代码。
4. **提供转换报告**:对于无法使用目标数据库的原生代码或通过添加的扩展包函数自动转换的部分,SCT 会提供一份报告,指出转换存在的问题以及你需要采取的解决措施。
例如,在将 SQL Server 源数据库转换为 RDS PostgreSQL 格式的评估报告中,可能会出现一些无法手动处理的转换问题。SCT 允许你深入查看这些对象,并查看建议的转换代码,以确保其正确性并在需要时进行修改。
假设 SCT 对 `SET ROWCOUNT 10` 行给出了严重警告,这意味着它无法将该行转换为与 PostgreSQL 兼容的版本,DBA 需要采取行动。你可以选择忽略该错误并应用注释掉该行的代码,或者尝试手动解决。在这个例子中,`SET ROWCOUNT` 的用法与 PostgreSQL 中的 `LIMIT` 命令相同,因此你可以考虑重写目标数据库代码,使其包含 `LIMIT 10`:
```sql
CREATE OR REPLACE PROCEDURE northwind_dbo."Ten Most Expensive Products" (INOUT p_refcur refcursor)
AS
$BODY$
BEGIN
OPEN p_refcur FOR
SELECT products.productname AS tenmostexpensiveproducts,
products.unitprice
FROM northwind_dbo.products
ORDER BY products.unitprice DESC
LIMIT 10;
END;
$BODY$
LANGUAGE plpgsql;
```
当你对代码满意后,有几种选择:你可以将新的 SQL 语句保存到一个文件中,然后手动在目标数据库上运行;或者如果你已将 SCT 连接到所选的目标数据库,你可以直接将更改应用到目标数据库,这将指示 SCT 为所有选定的对象运行 DDL 并创建目标模式,以便导入数据。
#### 转换应用程序代码
使用 SCT 评估和转换应用程序代码的过程与数据库代码类似。首先,你需要创建数据库项目,因为 SCT 无法访问未与数据库匹配的应用程序代码。完成后,你必须将应用程序代码文件加载到 SCT 中。代码可以是任何编程语言,因为 SCT 可以通过基于语法的查找来找到 SQL 代码,但它在 Java、Python 和 C 系列编程语言中效果最佳。
加载代码的步骤如下:
1. 点击 SCT 中的“Application”按钮并选择“New Application”。
2. 选择代码必须应用的数据库和模式。
3. 让 SCT 分析代码。SCT 会提取文件中的所有 SQL 代码,让你评估其与目标数据库引擎的兼容性。
4. SCT 会生成一份类似于数据库级报告的报告,显示哪些可以自动转换,哪些不能。
5. 审查报告后,你可以请求 SCT 在可能的情况下转换代码。
6. 审查未自动转换的代码并进行修改。
7. 完成必要的更改后,将其应用到代码中,SCT 会修改代码文件。
#### 迁移 ETL 作业到 AWS Glue
许多数据仓库应用程序使用 ETL 作业来处理从不
0
0
复制全文
相关推荐









