如何将 Aurora Mysql ddl 翻译成 Redshift ddl

Posted

技术标签:

【中文标题】如何将 Aurora Mysql ddl 翻译成 Redshift ddl【英文标题】:How to translate Aurora Mysql ddl to Redshift ddl 【发布时间】:2020-07-25 10:22:04 【问题描述】:

列出一系列 Auora mysql ddl 对象并将它们转换为 Redshift ddl(数据类型映射、PK、编码)的最佳方法是什么?

我正在尝试使用 lambdas 从 Aurora Mysql 迁移到 Redshift,但我需要先创建目标表。此操作必须在每次加载之前完成,因此需要自动化。

【问题讨论】:

【参考方案1】:

这可以使用Database Migration Service来完成

您可以将 DMS 用于以下 DDL 操作,Schema Conversion Tool 需要执行进一步的操作:

创建表 删除表 重命名表 添加列 删除列 重命名列 更改列数据类型

当您使用此服务时,它需要在您的帐户中启动一个资源来执行该操作,因此请注意这一点,因为它会有一个cost。

【讨论】:

感谢您的帮助。是的,我尝试了 DMS,它工作正常,但是当我想安排任务定期运行(我不能直接通过 CW 事件调用它们)以及如何让其他服务知道任务已正确完成时,我遇到了麻烦,因为DMS 事件并没有以这种方式区分,我无法使用过滤策略过滤它们(我计划使用 lambda 函数来预过滤它们)。总的来说似乎有点笨拙..对于这样一个“简单的任务”,这就是为什么我希望有另一个解决方案...... 是的,不幸的是,您需要将触发器作为触发此任务的 Lambda 函数。关于通知何时停止 CloudWatch 事件确实支持 DMS,但您必须使用 CloudTrail 中的特定事件名称。除此之外,这将是您自己/第三方的解决方案:)【参考方案2】:

您可以使用 liquibase(或 flyway)和 jenkins 进行调度,如 aws blog 所示。

    Liquibase 的 generateChangeLog 可以创建一个更改日志来表示您的 mysql 数据库的架构 使用生成的变更日志,您可以update Redshift 架构以及来自您的源的最新架构更改

【讨论】:

以上是关于如何将 Aurora Mysql ddl 翻译成 Redshift ddl的主要内容,如果未能解决你的问题,请参考以下文章

如何将 AWS RDS Aurora MySQL 5.6 升级到 5.7

关于mysql 5.6 哪些操作可以进行online ddl 详解

如何将 PostgreSQL“merge_db”(又名 upsert)函数翻译成 MySQL

AWS Aurora MySQL 无服务器:如何从 MySQL Workbench 连接

如何使用 aws cloudformation 或 aws cdk 设置 aws aurora mysql 表?

使用 Ruby on rails Elastic Beanstalk 将 RDS 迁移到 Aurora MySQL