Database Migration Service(DMS)与 Schema Conversion Tool
使用 DMS 通过完整加载或 CDC 迁移同构和异构数据库,并使用 Schema Conversion Tool 转换架构方言
Database Migration Service(DMS)与 Schema Conversion Tool 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 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 导师学习 Cloud & IT Cert Prep — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 150
- 课程
- 600
常见问题解答
「Database Migration Service(DMS)与 Schema Conversion Tool」课时是免费的吗?
是的 — 「Database Migration Service(DMS)与 Schema Conversion Tool」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「Database Migration Service(DMS)与 Schema Conversion Tool」这节课中我会学到什么?
使用 DMS 通过完整加载或 CDC 迁移同构和异构数据库,并使用 Schema Conversion Tool 转换架构方言 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「Database Migration Service(DMS)与 Schema Conversion Tool」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 迁移策略的 7R
- AWS Migration Hub 与 Application Discovery Service
- Application Migration Service(MGN)
- Database Migration Service(DMS)与 Schema Conversion Tool