将 MySQL 行从一个表迁移并转换到另一个表

问题描述

我需要将 30 亿条记录从一个 MysqL aurora 表迁移到同一集群中的 5 个不同表。

还有2列的转换也必须发生。

所以当我们迁移时,我们需要将 xml 转换为 json,然后 json 将存储在目标表之一中。

我们正在寻找将这些数据从一个 MysqL 表迁移到另一个表的最佳方法,而且我们在 AWS 上,因此我们可以灵活地使用任何可以帮助我们实现这一目标的服务。

到目前为止,这是我们计划的

MysqL TABLE ----DMS------>S3 ------LAMBDA to convert XML to JSON and create 5 types of files ---->Lambda on file create and Load data local to 5 Different MysqL table .

但是有一件事我们想知道如果 Load data local 在这两者之间失败我们如何处理?所以 Lambda 会将对从 s3 本地加载数据的查询提交到 MysqL 但是我们如何在 Lambda 中跟踪加载数据本地成功还是失败?

我们不能使用任何直接的方式,因为我们需要在两者之间转换数据。

这里有什么更好的方法可以使用吗?

我们可以使用数据管道代替 Lambda 函数来加载本地数据吗?

或者我们可以使用 DMS 将文件从 S3 上传MysqL 吗?

请建议能够处理故障情况的最佳方法是什么

解决方法

您所做的基本上是一个 ETL 过程。我建议您查看 AWS EMR 或 AWS Glue。由于您似乎没有那么多经验,我会使用 Glue。

使用 Glue,您基本上可以从 MySQL 读取数据,进行转换并直接写回 MySQL。此外,由于 Glue 在后台运行 Spark,您可以利用它的分布式计算,这将加快您的进程,而不是使用单线程 lambda 函数。