DMS (Database Migration Service) 和SCT (Schema Conversion Tool) 都是用来做Data Migration,准确说是Database Migration。
我一直理解的是,SCT是DMS的一部分。毕竟从名字上来说,SCT主要针对的是数据库Schema的部分,而DMS相当大气,人家是个服务(Service)。
可我在学习的过程中,发现其实用场景有些许的不同。比如这句:
SCT can copy database schemas for homogeneous migrations and convert them for heterogeneous migrations. The schemas can be between databases e.g.) Oracle to PostgreSQL or between data warehouses e.g.) Netezza to Amazon Redshift.
想一下也不难理解,SCT是针对Schema的操作,那虽然数据库类型不同,创建相对应的新的Schema就可以为接下来迁移数据做好准备。这点DMS干不了。
那之后的数据迁移,可以使用DMS,也可以使用SCT。但是他们的使用场景不一样:
DMS traditionally moves smaller relational workloads (<10 TB) and MongoDB, whereas SCT is primarily used to migrate large data warehouse workloads.
DMS对小(<10TB),SCT主大。特别注意,DMS只能对Relational db+MongoDB,其他的不支持。
这是一次性的。之后还要保证数据应该被持续地更新着。这里又特殊了,只有DMS可以做,SCT做不了。
所以,暂时小结一下。
SCT是个Tool,因此用它是一次性的。用它主要是在新目标上创建相应的Schema。迁移数据DMS和SCT都可以使,使用场景不同,第一次完成后,后续保持持续迁移,只有DMS可以做。因为它是个Service。
问题:
- 如果是On-Prem MySQL迁移到AWS Aurora(都是Relational DB),那么中间需要SCT参与吗?
- 如果目标不是Relational DB或者MongoDB,那么怎么做到Ongoing replication?
比较一下DMS和SCT支持的源和目标数据库类型:
[visualizer id=”2369″]
(来源:What Is AWS Database Migration Service?)
呃……看来,SCT虽然还是可以迁移数据,但是使用场景还是很少啊。
问题:Aurora竟然不能作为DMS的Target?
总结一下:SCT只是一个工具,在使用DMS的过程中,如果源数据库和目标数据库类型不同,则需要使用SCT来更改Schema来完成准备。
SCT是工具,因此执行一次就结束。
DMS是服务,因此支持持续迁移,称为ongoing replication或者continuous data replication。插一句,一次性的或者首次的迁移叫one-time replication 或者 one-time data migration。
DMS在和源、目标数据库通信时,其实各自创建了Endpoint,叫Source Endpoint和Target Endpoint。
DMS在数据迁移时,也务必保证了安全性,因此数据本身是用AWS KMS来加密的(Data at rest),迁移过程是用SSL来加密的(data in-flight)。
Reference:
https://aws.amazon.com/dms/faqs/
https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html
