使用Heroku的PG備份已經有了很大的http://addons.heroku.com/pgbackups我們如何自動發送的Heroku pgbackups到S3
我目前每天手動下載備份到電腦,然後將其上傳到我的S3帳戶。有誰知道如何設置一個cron作業來自動創建一個備份(每天都很好)並將其直接發送到我的S3帳戶?
使用Heroku的PG備份已經有了很大的http://addons.heroku.com/pgbackups我們如何自動發送的Heroku pgbackups到S3
我目前每天手動下載備份到電腦,然後將其上傳到我的S3帳戶。有誰知道如何設置一個cron作業來自動創建一個備份(每天都很好)並將其直接發送到我的S3帳戶?
如果您添加到LIB /任務,並在運行herkou將運行這個cron的插件:
namespace :heroku do
desc "PostgreSQL database backups from Heroku to Amazon S3"
task :backup => :environment do
begin
require 'right_aws'
puts "[#{Time.now}] heroku:backup started"
name = "#{ENV['APP_NAME']}-#{Time.now.strftime('%Y-%m-%d-%H%M%S')}.dump"
db = ENV['DATABASE_URL'].match(/postgres:\/\/([^:]+):([^@]+)@([^\/]+)\/(.+)/)
system "PGPASSWORD=#{db[2]} pg_dump -Fc -i --username=#{db[1]} --host=#{db[3]} #{db[4]} > tmp/#{name}"
s3 = RightAws::S3.new(ENV['s3_access_key_id'], ENV['s3_secret_access_key'])
bucket = s3.bucket("#{ENV['APP_NAME']}-heroku-backups", true, 'private')
bucket.put(name, open("tmp/#{name}"))
system "rm tmp/#{name}"
puts "[#{Time.now}] heroku:backup complete"
# rescue Exception => e
# require 'toadhopper'
# Toadhopper(ENV['hoptoad_key']).post!(e)
end
end
end
task :cron => :environment do
Rake::Task['heroku:backup'].invoke
我修補的寶石修復的B七所提到的系統調用。抓取數據庫參數的正則表達式正在破壞,因爲非共享數據庫的新DATABASE_URL現在包含一個端口號。
https://github.com/mokolabs/heroku_s3_backup
如果你雪松堆棧,那麼這個補丁應該爲你工作。但是我使用的是Bamboo,由於與pg_dump的版本衝突,它不適用於我。 Postgres是Bamboo上的8.x版本,所以pg_dump不能從新的非共享數據庫轉儲數據,因爲它們都在Postgres 9.1版上運行。
如果我能找到Bamboo堆棧的解決方法,我會在這裏更新gem和我的評論。
非常好,你應該向主回購商提交一個拉請求。 – 2012-09-01 17:40:37
有一個包裹這個功能的寶石,'heroku_s3_backup'。非常好地工作。 – 2011-05-07 17:11:52
Douglas:「有誰知道如何設置cron作業來自動創建備份(每天都很好)並將其直接發送到我的S3帳戶?」因此,我發佈了一份cron工作。 – eggie5 2011-05-07 17:51:43
寶石是完全相同的代碼,包裹起來,所以你的cron工作可以很好,整潔。請參閱:https://github.com/edavis10/heroku_s3_backup。 – 2011-05-07 18:35:46