将 RDS 上的 PostgreSQL 转储到 S3 的最佳方法

pmi*_*hna 11 postgresql aws amazon-rds

我需要定期将 RDS 上的 PostgreSQL 转储到 S3 上的文件中(以便在 AWS 之外的其他地方使用它)。

有没有比运行脚本更好的方法,该脚本pg_dump使用例如运行并将结果上传到 S3 boto3

小智 13

您可以pg_dump使用 aws cli将(gzipped)结果直接上传到 s3:

pg_dump -Z 9 -v -h ${DATABASE_HOST} -U ${DATABASE_USER} -d ${DATABASE_NAME} | aws s3 cp --storage-class STANDARD_IA --sse aws:kms - s3://my-bucket/dump.sql.gz
Run Code Online (Sandbox Code Playgroud)

在工作中,我们将其包装在一个脚本中,该脚本另外从参数存储中获取所需的凭据,然后将备份存储在 s3 中。该脚本作为预定的 ecs 任务在 docker 容器内运行。也许这个存储库中的代码会对你有所帮助。

  • 它将 STDOUT 从“pg_dump”流式传输到“aws s3 cp -”的 STDIN(这就是“-”的含义)。要恢复,请使用“aws s3 cp s3://... - |gunzip | psql” (2认同)