深入了解AWS数据库迁移服务:从理论到实践
立即解锁
发布时间: 2025-08-22 01:50:58 阅读量: 1 订阅数: 3 


AWS Certified Database Specialist Exam Prep
### 深入了解AWS数据库迁移服务:从理论到实践
在当今数字化时代,数据库迁移是许多企业面临的重要任务。AWS提供了强大的工具来帮助完成这一任务,其中包括AWS Schema Conversion Tool(SCT)和AWS Database Migration Service(DMS)。本文将详细介绍这些工具的使用方法、监控和调优技巧,并通过一个实践案例让你更好地掌握数据库迁移的过程。
#### 迁移前的准备工作
在开始数据库迁移之前,需要进行迁移前评估。评估报告将保存到S3存储桶中,因此你需要准备好一个S3存储桶,并拥有一个具有写入该存储桶权限的IAM角色。此外,你还可以为DMS任务设置数据验证,通过比较源数据库和目标数据库的主键和列,确保所有数据都已正确迁移。
#### 运行DMS任务
一旦迁移前评估完成,就可以创建DMS任务。创建任务需要几分钟时间,之后就可以运行任务。以下是通过SCT运行DMS任务的步骤:
1. 当任务成功创建并显示为“Ready”状态时,你可以启动任务。有两种启动方式:
- 选中任务旁边的复选框,然后在“Actions”下拉菜单中选择“Restart/Resume”。
- 点击任务名称,然后在“Actions”下拉菜单中选择“Restart/Resume”。
2. 任务运行后,你可以在“Table statistics”选项卡上监控其进度。
#### 监控和调优DMS
DMS提供了多种日志记录和监控选项,以满足不同的需求。对于新任务或未经过测试的任务,建议启用全面的调试监控,以便跟踪任何错误。任务成功完成后,可以减少后续运行的监控,以降低成本,因为所有监控日志都需要收费。以下是可用的监控和日志记录工具:
| 工具名称 | 描述 |
| ---- | ---- |
| DMS Console | 使用DMS图形用户界面检查当前任务的状态。 |
| AWS CLI | 运行awscli命令获取当前任务的状态。 |
| AWS Simple Notification Service (SNS) | 配置SNS事件,通过电子邮件通知任务的任何更改。 |
| CloudWatch | 配置DMS将增强日志发送到CloudWatch,以便跟踪错误。 |
| Time Travel Logs | DMS Time Travel存储有关CDC更改的信息,允许你查看数据的历史状态。此功能仅适用于PostgreSQL源数据库。 |
| Database Logs | 源数据库和目标数据库的日志将提供有关数据插入或更新失败的信息,可用于高级故障排除。 |
除了监控DMS任务的进度,还应监控DMS复制实例。为了实现最佳性能和成本效益,需要确保实例的CPU和内存没有过度或未充分利用。如果资源使用过度或不足,可以修改复制实例的实例类。但需要注意的是,更改实例类需要重新启动,因此在任何任务运行时不能进行修改。
```mermaid
graph LR
A[监控DMS任务] --> B[使用DMS Console]
A --> C[使用AWS CLI]
A --> D[配置AWS SNS]
A --> E[配置CloudWatch]
A --> F[查看Time Travel Logs]
A --> G[查看Database Logs]
H[监控DMS复制实例] --> I[检查CPU和内存使用情况]
I --> J{资源使用是否合理?}
J -- 是 --> K[继续监控]
J -- 否 --> L[修改实例类]
```
#### 性能调优
DMS任务具有高度可定制性,有许多参数和设置可以提高性能。在调优任何DMS任务时,需要考虑以下六个主要方面:
1. **复制实例类**:复制实例是任何DMS任务的主要瓶颈,因为它控制所有数据流并将源数据库转换为目标数据库。在任务执行期间,密切监控复制实例的资源使用情况。如果CPU和内存持续利用率超过80%,可以考虑更改实例类。DMS通常是内存密集型的,DMS复制实例可以支持r5和c5实例类,这些实例类每个核心的内存比其他实例类更高。
2. **任务设置**:可以通过以下设置提高性能:
- **提交率**:控制在单个事务中应用到目标数据库的行数。将其设置为较高的值可以加快迁移速度,因为事务数量减少。但较高的提交率需要复制实例有更多的内存,因此需要谨慎控制此值,以确保不会过度使用内存。
- **并行加载的表数量**:由“MaxFullLoadSubTasks”值控制。默认设置是一次加载八个表,但如果有大量较小的表和合适大小的复制实例,可以将此值设置为更高,以提高迁移速度。
- **在全量加载后创建主键索引**:主键用作每行的唯一标识符,通常会有一个索引来加速SELECT查询。但索引会减慢INSERT和UPDATE查询,因为在更新表时也需要更新索引。DMS允许你推迟创建这些索引,直到全量加载完成。
3. **LOB设置**:大对象(LOB)可能会导致迁移性能不佳。DMS处理LOB分为两个阶段,并且在转换期间需要将LOB保存在内存中。因此,正确的LOB迁移设置可以显著提高吞吐量。优化LOB迁移的最佳方法是确定范围内的表是否包含LOB。如果不包含,可以在DMS任务中选择“不包含LOB列”。如果包含,可以将其拆分为一个单独的任务,以便专门针对LOB进行调优。然后,找到范围内表中最大的LOB,并将任务设置为“Limited LOB”模式,将最大大小设置为找到的最大LOB的大小。这样,DMS可以更准确地调整内存块的大小来保存LOB数据,从而同时迁移更多的LOB数据,加快数据传输过程。
4. **任务拆分**:除了将LOB拆分为单独的任务,还可以对数据库中的其他表使用类似的方法。甚至可以通过列过滤将大表拆分为更小的任务。例如,如果有一个包含500,000行的表,并且其中一列包含序列号,可以使用WHERE子句创建五个任务,每个任务处理100,000行。这样可以让DMS并行处理表,而如果整个表在一个任务中,DMS则无法这样做。需要注意的是,如果源数据库仍在进行事务处理,可能会出现数据完整性问题。
5. **数据库设置**:如果可能的话,DMS建议在迁移期间删除所有索引和外键。任何索引或外键都会给迁移带来很大的开销,在数据迁移完成后重新创建它们会更快。但对于仍在使用的系统,这可能无法实现。云技术的一个主要优点是能够根据需要快速扩展和缩减,因此在开始迁移之前,可以增加目标数据库实例的大小,以提供更多的计算资源。迁移
0
0
复制全文
相关推荐










