2010-11-16 12:54:47 +0900
HerokuにPG Backupsというアドオンが加わり、Heroku上のPostgreSQLからダンプ取得・リストアが簡単にできるようになった。詳細はPG Backupsのページに書かれているのでそちらを見たほうが早いでしょう。
手元で試してみたところ、当然ながら問題なく使えました。この簡単さはすごい。
heroku
gemパッケージが更新されているのでアップデート。
$ gem update heroku
pgbackups関係のタスク一覧。
$ heroku help | grep pgbackups
=== pgbackups
pgbackups # list captured backups
pgbackups:capture [<DB_ID>] # capture a backup from database ID (default: DATABASE_URL)
pgbackups:url [<BACKUP_ID>] # get a temporary URL for a backup
pgbackups:destroy <BACKUP_ID> # destroy a backup
pgbackups:restore <BACKUP_ID> --db <DB_ID> # restore the database ID (default: DATABASE_URL) from a backup
pgbackups:restore <url> --db <DB_ID> # restore the database ID (default: DATABASE_URL) from a URL
capture
でダンプを取得、url
でダウンロード用のテンポラリURLを取得、restore
でダンプのリストア、destroy
でダンプの削除という感じ。
アプリケーションにpgbackupsアドオンを追加する。
$ heroku addons:add pgbackups:basic --app sooey-journal
Adding pgbackups:basic to sooey-journal... done
ダンプを取得してみる。
$ heroku pgbackups:capture --app sooey-journal
DATABASE_URL ----backup---> b001
Capturing... done
Storing... done
これで、バックアップIDがb001
のダンプが取得された。この時点ではダンプされたデータはHeroku側にあり、そのままリストアもできる。データを手元に持ってきたい場合はpgbackups:url
タスクにバックアップIDを渡すと、ダウンロード用のテンポラリなURLが返される。
$ heroku pgbackups:url b001 --app sooey-journal
http://s3.amazonaws.com/hkpgbackups/...
$ curl "http://s3.amazonaws.com/hkpgbackups/..." -o b001.dump
$ ls -l b001.dump
-rw-r--r-- 1 juno staff 44594 11 16 12:43 b001.dump