Database Migration Service(DMS)与 Schema Conversion Tool
使用 DMS 通过完整加载或 CDC 迁移同构和异构数据库,并使用 Schema Conversion Tool 转换架构方言
Database Migration Service(DMS)与 Schema Conversion Tool 是 CoddyKit 上的免费 AWS Solutions Architect 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS Solutions Architect 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS Solutions Architect 课程共包含 4 节课。
什么是 AWS DMS
AWS Database Migration Service (DMS) 可以在最短停机时间内将数据库迁移到 AWS。它支持同构迁移(例如 Oracle 到 Oracle、MySQL 到 MySQL)和异构迁移(例如 Oracle 到 Aurora PostgreSQL、SQL Server 到 MySQL)。DMS 使用 Replication Instance 从源数据库读取数据,可选择对数据进行转换,然后将数据写入 target。您只需为 Replication Instance 的运行时间付费。
DMS 组件:端点和 Replication Instance
DMS 有三个关键组件。源端点定义源数据库连接(JDBC URL、凭证和 TLS)。目标端点定义目标数据库。Replication Instance 是一个基于 EC2 的托管服务器,DMS 会在您的 VPC 中配置它来运行迁移工作负载。请根据需要迁移的数据量,以及是否希望 Replication Instance 本身使用 MultiAZ,选择 Replication Instance 的大小。
# Create a DMS replication instance
aws dms create-replication-instance \
--replication-instance-identifier my-dms-instance \
--replication-instance-class dms.t3.medium \
--allocated-storage 50 \
--vpc-security-group-ids sg-abc123 \
--replication-subnet-group-identifier my-dms-subnet-group \
--multi-az false \
--publicly-accessible falseFull Load 与 CDC 迁移
DMS 支持两种迁移模式。Full Load 会将源端的所有现有数据复制到 target,适用于可以承受停机,或迁移期间源端为只读的情况。Change Data Capture (CDC) 会在 Full Load 完成后从源端事务日志中捕获持续发生的更改,使源端和 target 保持同步。组合使用 Full Load + CDC 可以最大限度地减少停机时间:在源端保持运行的同时迁移数据,待 target 追上源端后再进行切换。
# Create a DMS replication task with Full Load + CDC
aws dms create-replication-task \
--replication-task-identifier sales-migration \
--source-endpoint-arn arn:aws:dms:us-east-1:123:endpoint:SOURCE \
--target-endpoint-arn arn:aws:dms:us-east-1:123:endpoint:TARGET \
--replication-instance-arn arn:aws:dms:us-east-1:123:rep:my-dms-instance \
--migration-type full-load-and-cdc \
--table-mappings '{"rules": [{"rule-type": "selection", "rule-id": "1", "rule-name": "all", "object-locator": {"schema-name": "%", "table-name": "%"}, "rule-action": "include"}]}'Schema Conversion Tool(SCT)
AWS Schema Conversion Tool (SCT) 是一款可免费下载的应用程序,可以自动将源数据库架构(DDL)转换为与目标数据库引擎兼容的格式。它可以处理表定义、视图、存储过程、函数和触发器。对于异构迁移(例如 Oracle 到 PostgreSQL),SCT 会自动转换大多数对象,并标记因语法差异不受支持而需要手动 Review的项目。
# SCT is a GUI desktop tool, but here is the workflow:
# 1. Connect SCT to source Oracle database
# 2. Connect SCT to target Aurora PostgreSQL database
# 3. Run schema assessment: SCT rates conversion complexity per object
# 4. Convert schema automatically (SCT generates PostgreSQL DDL)
# 5. Apply converted DDL to target (SCT executes or exports SQL script)
# 6. Review and manually fix flagged items (e.g., PL/SQL procedures with Oracle-specific syntax)同构迁移与异构迁移
对于同构迁移(使用相同引擎,例如从本地 MySQL 迁移到 RDS for MySQL),通常不需要 SCT,因为架构可以直接兼容。DMS 可以立即运行 Full Load + CDC。对于异构迁移(使用不同引擎),必须先由 SCT 转换架构,再由 DMS 处理数据迁移;对于目标引擎中没有对应实现的存储过程和触发器,您可能还需要手动重写。
# Example heterogeneous migration workflow:
# On-premises Oracle -> Amazon Aurora PostgreSQL
#
# Step 1: SCT converts Oracle DDL to PostgreSQL DDL
# Step 2: Apply PostgreSQL DDL to Aurora target
# Step 3: DMS Full Load + CDC copies Oracle table data to Aurora
# Step 4: Validate row counts and checksums
# Step 5: Cut over application connections to Aurora endpoint
# Step 6: Terminate DMS task and replication instance支持的源数据库和目标数据库
DMS 支持广泛的源端:Oracle、SQL Server、MySQL、MariaDB、PostgreSQL、SAP ASE、MongoDB、IBM Db2 和 S3。支持的目标端包括上述所有服务,此外还包括 Amazon Redshift、DynamoDB、Kinesis Data Streams 和 Kafka。因此,DMS 不仅适用于关系数据库迁移,还可以使用 CDC 将关系数据库的更改事件流式传输到数据湖或事件驱动架构中的 Kinesis。
DMS 表映射规则
DMS 使用 表映射规则(JSON)来控制要包含或排除的架构和表,并应用数据转换。您可以重命名架构或表,转换列值(例如将所有字符串转换为大写),添加派生列,或筛选行。当目标端采用不同的命名约定,或您只想迁移部分表时,这些功能非常有用。
# Table mapping: include only the 'orders' table, rename schema
{
'rules': [
{
'rule-type': 'selection',
'rule-id': '1',
'rule-name': 'select-orders',
'object-locator': {'schema-name': 'prod_db', 'table-name': 'orders'},
'rule-action': 'include'
},
{
'rule-type': 'transformation',
'rule-id': '2',
'rule-name': 'rename-schema',
'rule-action': 'convert-uppercase',
'rule-target': 'schema',
'object-locator': {'schema-name': 'prod_db'}
}
]
}监控 DMS 迁移进度
DMS 会将指标发布到 CloudWatch:FullLoadThroughputRowsSource(每秒加载的行数)、CDCLatencySource(源事务日志与 DMS 读取该日志之间的延迟)以及 CDCLatencyTarget(DMS 读取数据与写入 target 之间的延迟)。在同步阶段请密切监控 CDCLatencyTarget;当该值降至接近零时,target 已追上源端,您就可以进行切换。
# Monitor CDC latency via CloudWatch CLI
aws cloudwatch get-metric-statistics \
--namespace AWS/DMS \
--metric-name CDCLatencyTarget \
--dimensions Name=ReplicationInstanceIdentifier,Value=my-dms-instance \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-01T01:00:00Z \
--period 60 \
--statistics AverageDMS Serverless
DMS Serverless 会根据迁移工作负载自动配置和扩展复制容量,因此无需选择和管理 Replication Instance 的大小。您只需指定 DMS 容量单位(DCU)的最小值和最大值,DMS 就会在该范围内自动扩展。这非常适合负载变化较大的迁移,或者您希望避免在迁移负载达到峰值时 Replication Instance 容量不足的风险。
# Create a DMS Serverless replication
aws dms create-replication \
--replication-config-identifier my-serverless-migration \
--replication-type full-load-and-cdc \
--source-endpoint-arn arn:aws:dms:us-east-1:123:endpoint:SOURCE \
--target-endpoint-arn arn:aws:dms:us-east-1:123:endpoint:TARGET \
--compute-config '{
"MinCapacityUnits": 2,
"MaxCapacityUnits": 64,
"MultiAZ": false,
"ReplicationSubnetGroupId": "my-subnet-group",
"VpcSecurityGroupIds": ["sg-abc123"]
}'验证迁移完整性
迁移后,请使用 DMS 的数据验证功能验证数据完整性。在任务设置中启用该功能后,DMS 会比较源表和目标表的行数及校验和,并将不匹配项报告到单独的验证表中。对于异构迁移,还应运行应用程序级别的冒烟测试。在验证显示零差异之前,切勿进行切换——有缺陷的切换完成后再协调数据,成本远高于多花时间进行验证。
# Enable validation in DMS task settings (JSON)
{
'TargetMetadata': {'SupportLobs': true, 'FullLobMode': false},
'ValidationSettings': {
'EnableValidation': true,
'ValidationMode': 'ROW_LEVEL',
'ValidationOnly': false,
'FailureMaxCount': 10000
}
}常见的 DMS 考试场景
在 SAA-C03 考试中,DMS 会出现在需要以最短停机时间迁移数据库的场景中。关键信号包括:“迁移数据库并持续复制” → DMS Full Load + CDC;“更换数据库引擎” → 先使用 SCT,再使用 DMS;“将更改近乎实时地复制到数据湖” → 使用 DMS CDC 复制到 Kinesis 或 S3;“将多个源数据库整合到一个目标中” → 使用多个 DMS 任务连接到一个目标端点。DMS 专门用于数据库迁移;服务器迁移应使用 MGN,大量数据传输应使用 DataSync 或 Snowball。
快速检查
请测试您对本课 AWS Solutions Architect (SAA-C03) 概念的理解。
课程回顾
本课您学习了以下内容:DMS 使用 Full Load 和 CDC 模式支持同构及异构数据库迁移;SCT 可自动完成更换数据库引擎时的架构转换,并标记需要手动 Review 的项目;以及DMS Serverless 会自动扩展复制容量,从而无需确定实例大小。接下来,我们将学习 Amazon EventBridge,了解事件驱动的路由和总线架构。
用 AI 导师学习 AWS Solutions Architect — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 30
- 课程
- 120
常见问题解答
「Database Migration Service(DMS)与 Schema Conversion Tool」课时是免费的吗?
是的 — 「Database Migration Service(DMS)与 Schema Conversion Tool」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS Solutions Architect 课程的其余内容,请升级到 CoddyKit PRO。 AWS Solutions Architect 课程共包含 4 节课。
「Database Migration Service(DMS)与 Schema Conversion Tool」这节课中我会学到什么?
使用 DMS 通过完整加载或 CDC 迁移同构和异构数据库,并使用 Schema Conversion Tool 转换架构方言 你通过在浏览器中直接运行的动手代码来练习 AWS Solutions Architect,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AWS Solutions Architect 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AWS Solutions Architect 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「Database Migration Service(DMS)与 Schema Conversion Tool」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AWS Solutions Architect 课中编写并运行代码吗?
能。每节 AWS Solutions Architect 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 迁移策略的 7R
- AWS Migration Hub 与 Application Discovery Service
- Application Migration Service(MGN)
- Database Migration Service(DMS)与 Schema Conversion Tool