AWS DMS在内部如何工作

时间:2018-07-27 13:56:25

标签: amazon-web-services import export aws-dms

在AWS DMS中,迁移在内部如何进行?就像从源表导出整个数据并导入到目标表一样吗?还是就像将表记录一张一张地迁移到目标表一样?我是AWS DMS的新手,对那里的工作原理不了解。

4 个答案:

答案 0 :(得分:0)

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. Debugging Your AWS DMS Migrations: What to Do When Things Go Wrong (Part 1)
  2. Debugging Your AWS DMS Migrations: What to Do When Things Go Wrong (Part 2)
  3. Debugging Your AWS DMS Migrations: What to Do When Things Go Wrong? (Part 3)

最后,浏览https://aws.amazon.com/blogs/database/category/migration/aws-database-migration-service-migration/上特定于源数据库和目标数据库的博客

答案 1 :(得分:0)

以下文档提供了有关 DMS 持续复制如何在内部工作的更多信息:https://aws.amazon.com/blogs/database/introducing-ongoing-replication-from-amazon-rds-for-sql-server-using-aws-database-migration-service/

缺点是:

<块引用>

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

答案 2 :(得分:0)

除了上述答案之外,DMS 在下面使用了 Attunity。有关于后者如何运作的公开文件。

答案 3 :(得分:0)

当我第一次使用 DMS 时,我遇到了同样的问题。所以我简单地启用了 Cloudwatch 日志并创建了一项从 Oracle 到 Aurora Postgresql 的迁移任务。

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