是否可以使用 AWS Data Pipeline 将 RDS 数据库转储到 S3?
Is it possible to dump a RDS database to S3 using AWS Data Pipeline?
基本上我想使用 AWS Data Pipeline pg_dump
我的 RDS 数据库到 S3,
我不是 100% 确定这是否可行我已经到了 SqlDataNode
想要 selectQuery
的阶段,此时我想知道该怎么做。
以下是我目前的模板:
AWSTemplateFormatVersion: "2010-05-15"
Description: RDS to S3 Dump
Parameters:
RDSInstanceID:
Description: "Instance ID of RDS to Dump from"
DatabaseName:
Description: "Name of the Database to Dump"
Type: String
Username:
Description: "Database Username"
Type: String
Password:
Description: "Database password"
Type: String
NoEcho: true
RDSToS3Dump:
Type: "AWS::DataPipeline::Pipeline"
Properties:
Name: "RDSToS3Dump"
Description: "Pipeline to backup RDS data to S3"
Activate: true
ParameterObjects:
-
name: "SourceRDSTable"
type: "SqlDataNode"
Database: !Ref DatabaseName
-
name: !Ref DatabaseName
type: "RdsDatabase"
databaseName: !Ref DatabaseName
username: !Ref Username
password: !Ref Password
rdsInstanceId: !Ref RDSInstanceID
-
name: "S3OutputLocation"
type: "S3DataNode"
filePath: #TODO: S3 Bucket here parameterized? Will actually need to create one.
-
name: "RDStoS3CopyActivity"
type: "CopyActivity"
input: "SourceRDSTable"
output: "S3OutputLocation"
#TODO: do we need a runsOn?
使用数据管道我相信你只能转储表而不是整个数据库 pg_dump。
您是否看过文档,因为 selectQuery 只需要一个 SQL 语句来表示您要转储的内容,即 "select * from mytable"?也许这有帮助。
http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-sqldatanode.html
-
name: "SourceRDSTable"
type: "SqlDataNode"
Database: !Ref DatabaseName
table: "mytable"
selectQuery: "select * from #{table}"
正如在另一个答案中提到的,AWS Data Pipeline 只允许您转储表而不是整个数据库。如果您真的想使用 pg_dump
使用 AWS CloudFormation
将数据库的全部内容转储到 S3,您可以
使用 Lambda-backed custom resources。沿着这条路走下去,您将必须编写一个 Lambda 函数:
- 连接到数据库
- 使用
pg_dump
转储您的数据库
- 上传到 S3
基本上我想使用 AWS Data Pipeline pg_dump
我的 RDS 数据库到 S3,
我不是 100% 确定这是否可行我已经到了 SqlDataNode
想要 selectQuery
的阶段,此时我想知道该怎么做。
以下是我目前的模板:
AWSTemplateFormatVersion: "2010-05-15"
Description: RDS to S3 Dump
Parameters:
RDSInstanceID:
Description: "Instance ID of RDS to Dump from"
DatabaseName:
Description: "Name of the Database to Dump"
Type: String
Username:
Description: "Database Username"
Type: String
Password:
Description: "Database password"
Type: String
NoEcho: true
RDSToS3Dump:
Type: "AWS::DataPipeline::Pipeline"
Properties:
Name: "RDSToS3Dump"
Description: "Pipeline to backup RDS data to S3"
Activate: true
ParameterObjects:
-
name: "SourceRDSTable"
type: "SqlDataNode"
Database: !Ref DatabaseName
-
name: !Ref DatabaseName
type: "RdsDatabase"
databaseName: !Ref DatabaseName
username: !Ref Username
password: !Ref Password
rdsInstanceId: !Ref RDSInstanceID
-
name: "S3OutputLocation"
type: "S3DataNode"
filePath: #TODO: S3 Bucket here parameterized? Will actually need to create one.
-
name: "RDStoS3CopyActivity"
type: "CopyActivity"
input: "SourceRDSTable"
output: "S3OutputLocation"
#TODO: do we need a runsOn?
使用数据管道我相信你只能转储表而不是整个数据库 pg_dump。
您是否看过文档,因为 selectQuery 只需要一个 SQL 语句来表示您要转储的内容,即 "select * from mytable"?也许这有帮助。 http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-sqldatanode.html
-
name: "SourceRDSTable"
type: "SqlDataNode"
Database: !Ref DatabaseName
table: "mytable"
selectQuery: "select * from #{table}"
正如在另一个答案中提到的,AWS Data Pipeline 只允许您转储表而不是整个数据库。如果您真的想使用 pg_dump
使用 AWS CloudFormation
将数据库的全部内容转储到 S3,您可以
使用 Lambda-backed custom resources。沿着这条路走下去,您将必须编写一个 Lambda 函数:
- 连接到数据库
- 使用
pg_dump
转储您的数据库
- 上传到 S3