3

在 AWS DMS 中,迁移如何在内部发生?是否就像从源表中导出整个数据并导入到目标表中一样?还是像将表记录一一迁移到目标表?我是 aws dms 的新手,对那里的工作方式不太了解。

4

4 回答 4

1

AWS 在其文档和博客文章中发布了 DMS 的工作原理。这是我开始使用 DMS 时希望拥有的列表:

有关高级理解,请参阅:https ://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.html

一项任务可以包括三个主要阶段:

  • 现有数据的全部加载
  • 缓存更改的应用
  • 持续复制

在完全加载迁移期间,将来自源的现有数据移动到目标,AWS DMS 将数据从源数据存储上的表加载到目标数据存储上的表。在完全加载过程中,对正在加载的表所做的任何更改都会缓存在复制服务器上;这些是缓存的更改。

...

当给定表的完全加载完成后,AWS DMS 会立即开始应用该表的缓存更改。加载所有表后,AWS DMS 开始收集更改作为正在进行的复制阶段的事务。在 AWS DMS 应用所有缓存的更改后,表在事务上是一致的。此时,AWS DMS 进入正在进行的复制阶段,将更改作为事务应用。

来自:https ://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Components.html

看标题:

  1. 复制任务
  2. 持续复制或变更数据捕获 (CDC)

要详细了解 DMS 在内部的工作原理,请通读 AWS 的以下博客:

  1. 调试您的 AWS DMS 迁移:出现问题时该怎么办(第 1 部分)
  2. 调试您的 AWS DMS 迁移:出现问题时该怎么办(第 2 部分)
  3. 调试 AWS DMS 迁移:出现问题时该怎么办?(第 3 部分)

最后,通过https://aws.amazon.com/blogs/database/category/migration/aws-database-migration-service-migration/上针对您的源数据库和目标数据库的博客进行工作

于 2018-09-27T05:35:47.487 回答
1

当我第一次使用 DMS 时,我也有同样的问题。因此,我启用了 Cloudwatch 日志并创建了一项从 Oracle 到 Aurora Postgresql 的迁移任务。

  • 第一个 DMS 任务在复制实例上运行,它连接到源和目标数据库。
  • RI 然后连接到源数据库并根据选择规则识别表和列详细信息,因为它对源数据库和目标数据库具有很多特殊访问权限。
  • 之后,它开始并行读取源表并创建Select col1, col2, col3.. from一种查询以从源中获取数据。
  • 然后它根据表在 RI 上的临时位置写入文件,每个表 1 个文件,一次提交大约 10000 行。
  • 当这一切发生时,另一个进程正在创建与目标数据库的连接并检查表是否已经存在,如果是,那么它会检查我们选择了哪个选项什么都不做或截断表等。基于此它会采取行动。
  • 到目前为止,我们在 RI 上的文件中拥有来自 Source 表的数据,以及在 Target DB 上创建的连接和表。现在 RI 只是从 RI 临时位置读取文件记录并创建插入查询。
  • 一旦最后一次提交成功,它就会从 RI 中删除临时文件。
  • 一旦源表和目标表计数匹配,它会在一次性加载的情况下关闭连接。
  • 如果正在进行更改,它会保持连接活动并读取源数据库中的重做日志或其他日志。然后按照上面提到的 CDC 相同的过程进行操作。
于 2021-06-23T13:13:02.013 回答
0

除了上面的答案,DMS 在下面使用 Attunity。有关于后者如何详细工作的公开文件。

于 2021-01-25T03:00:36.553 回答
0

这是一个文档,提供了有关 DMS 持续复制如何在内部工作的更多信息:https ://aws.amazon.com/blogs/database/introducing-ongoing-replication-from-amazon-rds-for-sql-server-using- aws-数据库-迁移服务/

它的短处是:

(遵循一些初始步骤)AWS DMS 不使用任何复制工件。当事务日志或事务日志备份中的所有必需信息都可用时,AWS DMS 使用 fn_dblog() 和 fn_dump_dblog() 函数使用日志序列号 (LSN) 直接从事务日志或事务日志备份中读取更改。

于 2021-01-08T14:34:26.597 回答