将heroku pg备份存储在自己的S3存储桶上

时间:2016-03-29 14:45:10

标签: heroku

Heroku提供PG数据库的自动和预定备份。 https://devcenter.heroku.com/articles/heroku-postgres-data-safety-and-continuous-protection

  

GBackup将启动专用dyno来转储数据库   并将其上传到S3

简单问题:是否可以将计划的PG备份上传到一个OWN S3 Bucket?只需控制备份文件,不受存储空间的限制。如果可能的话,研究这个主题并没有给我答案。

3 个答案:

答案 0 :(得分:0)

一种选择是创建备份(您甚至可以创建一个跟随者数据库,以便出于性能原因创建它),然后通过流将备份下载到您的服务器,然后将其上传到您自己的S3存储桶中。

如果您想要一个快速铁路应用程序来执行此操作,您可以设置https://github.com/kjohnston/pgbackups-archive。除了创建一个关注者数据库之外,它还可以做任何事情,但是如果你不太关注性能24/7,那么这应该没问题。我不知道Heroku为什么不为你自己的S3存储桶提供存储,因为它们自己将它们存储在S3上。

答案 1 :(得分:0)

这里是a buildpack,可以定期执行此操作。尚未对其进行一点更新,但是您可以根据需要轻松地对其进行更新/调整。

答案 2 :(得分:0)

您可以使用Heroku调度程序和bash脚本来实现。

# Set the script to fail fast if there
# is an error or a missing variable

set -eu
set -o pipefail

#!/bin/sh

# Download the latest backup from
# Heroku and gzip it

heroku pg:backups:download --output=/tmp/pg_backup.dump --app $APP_NAME
gzip /tmp/pg_backup.dump

# Encrypt the gzipped backup file
# using GPG passphrase

gpg --yes --batch --passphrase=$PG_BACKUP_PASSWORD -c /tmp/pg_backup.dump.gz

# Remove the plaintext backup file

rm /tmp/pg_backup.dump.gz

# Generate backup filename based
# on the current date

BACKUP_FILE_NAME="heroku-backup-$(date '+%Y-%m-%d_%H.%M').gpg"

# Upload the file to S3 using
# AWS CLI

aws s3 cp /tmp/pg_backup.dump.gz.gpg "s3://${S3_BUCKET_NAME}/${BACKUP_FILE_NAME}"

# Remove the encrypted backup file

rm /tmp/pg_backup.dump.gz.gpg

您可以查看this tutorial以获得详细的逐步说明。