如何将 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 连接