我们计划转向amazon-redshift用于我们的数据仓库解决方案,我们需要设置一个从mysql到redshift的增量管道,它也处理更新,最有效的方法是什么?
答案 0 :(得分:0)
对于从MySQL到RedShift的数据同步,您可以尝试使用AWS Data Pipeline。
答案 1 :(得分:0)
您可以使用市场上现有的解决方案,例如http://www.bryte.com.au/solutions/amazon-redshift-integration/。否则,您将需要实现触发器和AWS Data Pipeline。
答案 2 :(得分:0)
选项1:定期背景从MySQL表读取并写入Redshift。每当定期读取时,您将在MySQL DB上创建尖峰加载。那时MySQL DB对其他在线用户来说会变慢。
选项2:使用选项1但更好的方法是,修改额外标志和列的MySQL模式表,并让MySQL桌面上的多线程后台程序以更有效的方式从MySQL表中读取。
选项3:经济有效的方式,使用S3作为临时区域,修改写入MySQL的程序,让该程序也写入S3位置。您可以在背景中运行自定义Java程序,该程序将定期从S3同步到Redshift。 随着MySQL数据库的峰值负载,使用数据管道将是代价高昂的选择。
选项5:AWS Data管道
选项6:AWS lambda函数
答案 3 :(得分:0)
我建议尽量保持简单。如果您的MySQL数据库的大小很小,那么您可以运行mysqldump
,将每个表的转储加载到临时表,然后针对最终表执行INSERT / UPDATE / DELETE过程。如果您的MySQL数据库对于常规完全转储而言太大,那么您将需要对已更改数据进行选择性提取。
我们对这两种方法(来自SQL Server)进行了混合:对仅附加的大型表进行选择性提取,并对更新数据的较小表进行完全转储。我们每小时执行此操作,并且每天可以处理数百GB而不会出现问题。
或者,您可以尝试一些商业ETL工具,声称可以将数据库与Redshift“同步”(从Informatica Cloud和Attunity Cloudbeam开始)。我们发现这些工具无法支持live和Redshift之间我们需要的一些转换。
答案 4 :(得分:0)
您可以使用以下解决方案之一:
答案 5 :(得分:0)
您可以使用AWS Data Pipeline或使用ironBeast。一种服务,可以帮助您将数据传输到Redshift,并在数据进入内部时保存数据(设置到期,吸尘,修复stl_load_errors等)
http://www.ironsrc.com/ironbeast
披露:我正在领导一个开发此解决方案的团队。