herokuのpostgresqlデータベースからローカルのrailsプロジェクトデータベースにコピー

heroku上のproduction環境などで動作しているアプリケーションで不具合があった場合に、不具合の調査をしたいということで、herokuからローカル環境にデータベースをコピーしてみた。

 

今回の作業には、pgbackupsプラグインが必要。

heroku addons:add pgbackups

 

まずは現在のherokuのデータベースのバックアップをとる。

$ heroku pgbackups:capture

 

バックアップをとったファイルをダウンロードするためのURLを問い合わせる。

$ heroku pgbackups:url

 

表示されたダウンロードURLにブラウザでアクセスしてb001.dumpのようなファイルを取得する。
(wgetで取得しようとしたら403 Forbiddenになった。なぜ?ログインの問題か、コマンド間違えたか。。)

 

取得したバックアップファイルをリストアする前に、ローカルのdevelopment環境のデータベースのテーブルを全て削除しておく。(railsアプリのホームフォルダで実施)

$ bundle exec rake db:migrate VERSION=0

 

dumpファイルからリストア

$ pg_restore -U my-postgres-user -d my-app-development b001.dump

「ロール○○は存在しません」とか「リレーション○○はすでに存在します」などのエラーがけっこう大量に表示されるものの、実際にデータベースを覗いてみると、ちゃんとテーブルが作成されてデータも登録されていて、アプリケーションも動作した。

別にテスト環境の話なのでよしとしておこう。

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=2616