如何将数据从AWS Postgres RDS传输到S3(然后是Redshift)?
我正在使用AWS数据管道服务将数据从RDS MySql
数据库传输到s3
,然后到Redshift
,这很好地工作。如何将数据从AWS Postgres RDS传输到S3(然后是Redshift)?
但是,我也有数据生活在RDS Postres
实例中,我想以同样的方式管道,但我很难设置jdbc连接。如果这不受支持,是否有解决方法?
"connectionString": "jdbc:postgresql://THE_RDS_INSTANCE:5432/THE_DB”
这还不行。 aws没有构建/发布功能来很好地连接到postgres。尽管如此,你可以在shellcommandactivity中执行它。你可以写一些ruby或python代码来做到这一点,并使用scriptUri将其放在s3的脚本中。你也可以直接编写一个psql命令将表转储到一个csv,然后在该活动节点中用“staging:true”将它传递给OUTPUT1_STAGING_DIR。
是这样的:
{
"id": "DumpCommand",
"type": "ShellCommandActivity",
"runsOn": { "ref": "MyEC2Resource" },
"stage": "true",
"output": { "ref": "S3ForRedshiftDataNode" },
"command": "PGPASSWORD=password psql -h HOST -U USER -d DATABASE -p 5432 -t -A -F\",\" -c \"select blah_id from blahs\" > ${OUTPUT1_STAGING_DIR}/my_data.csv"
}
我没跑这来验证,因为它旋转起来管道中的痛苦:(所以仔细检查逃逸的命令
- 利弊。 :超级简单,不需要额外的脚本文件上传到S3
- 缺点:不完全安全。你的数据库密码将通过电线传输而不加密。
研究刚刚在参数化模板数据管道上启动的新工具:http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-custom-templates.html。它看起来会允许加密任意参数。
AWS现在允许合作伙伴执行接近实时的RDS - > Redshift插入。
https://aws.amazon.com/blogs/aws/fast-easy-free-sync-rds-to-redshift/
截至2015年2月25日,上述链接仅支持MySQL - > Redshift,并且不支持OP询问的Postgres。 – 2015-02-25 18:43:05
看起来从那时起它已经更新。从链接:上面讨论的所有四个数据集成解决方案可以用于所有RDS数据库引擎(MySQL,SQL Server,PostgreSQL和Oracle)._ – ryan 2015-08-17 23:26:08
现在,你可以定义一个复制活动来提取一个Postgres RDS实例数据到S3。在数据管道接口中:
- 创建SqlDataNode类型的数据节点。指定表名并选择查询
- 通过指定RDS实例ID(实例ID在您的URL中,例如your-instance-id.xxxxx.eu-west-1.rds.amazonaws.com)以及用户名,密码和数据库名称。
- 创建类型S3DataNode
- 的数据节点创建副本活动,并设置SqlDataNode作为输入和S3DataNode作为输出
已确认,您不需要shellcommandactivity – 2016-03-17 17:58:44
这太糟糕了,这是不正确的目前尚未在CA中提供 – 2016-07-25 17:26:32
作为一个快速更新:在PostgreSQL现在支持SSL,所以如果你在一个新版本确保设置ssl = true,以便设置加密。 – 2016-07-25 17:30:05