将 RDS 转移到 S3 再转移到 RDS 或 Redshift 实现近实时传输

0

【以下的问题经过翻译处理】 IHAC 使用一组 RDS(250 个数据库,每个客户一个)实例用于 OLTP,另一组 RDS 使用转换后的数据进行分析。

他们所有的客户数据都必须进行隔离(目前大约有 250 个客户,但还在增加)。

他们正尝试使用 DMS 进行迁移,但遇到了问题。 RDS 到 RDS 对他们来说真的很慢,CDC 也不好用,所以他们改用了 RDS 到 S3,然后使用 Glue 进行数据转换并放入分析服务器。

他们目前的解决方案简单快捷,但随后他们面临了 DMS 端点限制的问题。

他们只有大约 350 GB 的数据,但我仍然认为他们使用 Redshift 或 Redshift Spectrum for OLAP 可能会更好。

问题仍然在于如何进行迁移和数据转换最有效。

由于使用方法不对,DMS CDC 仍然可能存在问题。

但是,还有 RDS 快照导出的选项可以与 Redshift Spectrum 一起使用 。这能否用于增量数据? https://aws.amazon.com/about-aws/whats-new/2020/01/announcing-amazon-relational-database-service-snapshot-export-to-s3/

由于客户数据隔离,将会有数百个数据库,每个数据库都有相同的表名,分别在 S3 中需要一个单独的目录。

有什么建议吗?

1 回答
0

【以下的回答经过翻译处理】 根据您的客户对“近乎实时”的定义,您有几个选择,但所有这些选择都需要考虑各种成本和因素:

  1. 使用 WAL 复制到 Kinesis: <https://aws.amazon.com/blogs/database/stream-changes-from-amazon-rds-for-postgresql-using-amazon-kinesis-data-streams-and-aws-lambda />。这会消耗您主数据库的资源,但您可以通过设置副本来减少资源消耗。
  2. 定时对变更了的数据进行 S3 导出。这是成本最低的方法,您可以决定从哪些表导出数据以及导出的频率。您可以选择每10分钟左右做一次,可以使用Lambda 和 AWS Batch 实现。
  3. 升级为 Aurora 并使用数据库流。这样您在写入时的影响最小,只需使用lambda 将 SQL 语句转换为数据文件即可。
  4. 将 DMS 与 RDS 作为源,S3 作为目标。与#1一样,建议您在 RDS 副本上设置。
profile picture
专家
已回答 6 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则