Sooey

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