トップ «前の日記(2011/01/11 (火) ) 最新 次の日記(2011/01/13 (木) )» 編集 RSS feed

HsbtDiary


2011/01/12 (水) [長年日記]

[heroku] heroku の db バックアップ周り

最近、再び heroku を触ることがあって db のバックアップとかリストアをいじっていたのでメモ。

基本的な方法だとdb:pullとdb:pushを使う。最初に taps を gem で入れておく。あとは

heroku db:push postgres://user:pass@localhost/app

とかそういう感じ。これは localhost とか適当な場所に postgresql とかを動かさないとダメなので要注意。

最近追加された方法としては addons:pgbackups を使う。

heroku addons:add pgbackups:basic

これは heroku で用意している共有データベースにバックアップするというもの。実際にはS3に放り込んでいるみたい。

heroku pgbackups:capture

で今の瞬間のDBを保存。バックアップの一覧を確認したいときは

heroku pgbackups

を使うとIDと共に一覧が出てくる。バックアップのダンプを手元に持ってきたい場合は

heroku pgbackups:url b001

とか実行するとS3のURLが出てくる。b001の部分はDB IDで省略した場合は最後にバックアップされたもののURLが出てくる。なのでワンライナーで持ってきたい場合は公式ドキュメントにあるように

curl -o latest.dump `heroku pgbackups:url`

と実行すればいいみたい。

ちなみにpgbackupsで持ってきたダンプデータは psql にリダイレクトで突っ込む方法ではなく、pg_restore を使わないとダメみたい。今日は pgbackups で手元に持ってきたダンプデータを使ってリストアしようと思ったけど、何故かうまく行かなかったので pg_restore と db:push を経由するという方法をとったんだけど、何が原因なのかなあ。

ほんとに heroku はなんかすごいことになってるね。production で使っていくには、もう少し素振りが必要っぽい。

今日書いたことはドキュメントにだいたい書いてあるので詳しくはそっちへ。

[rubykaigi][ruby][sprk03] 札幌Ruby会議03で発表した動画が公開された

いつの間にかニコニコ動画で公開されていたのであった。中の人お疲れ様です。

http://www.nicovideo.jp/watch/sm12972926

テストとか文化についてしゃべったつもりなので興味のある方は是非どうぞ。