nabehiro ブログ

開発・プログラミングに関して適当に書くブログ

herokuでデータベースのバックアップ(pgbackups)を自動化する

heroku から「bundlesは、4/4に終わるからpgbackups使えや〜」とメールが来たので、pgbackupsの自動化を調べてみた。



herokuのデータベースのバックアップをcronで自動化するには、下記の gem を使えばOK。
GitHub - ddollar/heroku_backup_task: This project has a new maintainer
pgbackups addon は、無料版だとバックアップを2つ保持できます。
この gem は既に2つのバックアップがある場合は、古いバックアップを破棄して新しいバックアップを作成します。
(heroku pgbackups:capture --expire と同じ動作)



install方法に書いてあるとおり、

Gemfile に追加

gem "heroku_backup_task"

cron.rake

require "heroku_backup_task"

desc 'execute hourly task'
task :cron do
  # other code here
  
  HerokuBackupTask.execute
end


heroku にpush して実行した結果は、下記のような感じ。

$ heroku pgbackups
ID   | Backup Time         | Size       | Database    
-----+---------------------+------------+-------------
b004 | 2011/01/26 08:18.53 | 942.0bytes | DATABASE_URL
b005 | 2011/01/26 08:37.08 | 942.0bytes | DATABASE_URL

$ heroku rake cron
(in /disk1/home/slugs/1ba16e10-bb38-41a1-a6e2-7cb3f205636b/mnt)
[Wed Jan 26 08:44:51 -0800 2011] starting heroku backup task
[Wed Jan 26 08:44:51 -0800 2011] backing up: DATABASE_URL

$ heroku pgbackups
ID   | Backup Time         | Size       | Database    
-----+---------------------+------------+-------------
b005 | 2011/01/26 08:37.08 | 942.0bytes | DATABASE_URL
b006 | 2011/01/26 08:44.51 | 942.0bytes | DATABASE_URL

作者の、 ddollar さんはherokuの便利そうなgem結構つくっているなぁ。