ローカルのデータベースをherokuにリストアする

Shunsuke Sawada

テスト環境でデータもつくってしまって、本番環境にあげたいなんてこともあります。
すぐ忘れるのでメモしておこう。ドキュメント通り。

追記 2015/0613
Herokuのpg backupが新しくなりました。

Developers are required to use the new backup system and associated commands. The new commands can be found in the Heroku Postgres namespace in the CLI instead of a separate add-on. A mapping document has been created to ease the transition from the add-on to the new system.

詳しくはこちらですが、
大きな違いとしては、 pgbackupsheroku pg:backups となってます。
下記の記事のコマンドも修正しました。

また、リストアする際に、-t オプションをつけることで、
特定のテーブルだけリストアできてましたが、今回からできなくなりました。

restoreすると全部のテーブルがごっそり消えます。
お気をつけてー。

ダンプ

まず手元のデータベースをダンプする必要がある。

1
 PGPASSWORD=mypassword pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dump

mypassword データベースのパスワード
myuser ユーザー名
mydb データベース名
mydb.dump ダンプのファイル名

アップロード

herokuからアクセスできるところに置きましょう。
レンタルサーバーでもいいし、Amazon S3とかでもいい。

リストア

あとはそのパスを指定するだけ。

古いやり方

ruby
1
# heroku pgbackups:restore DATABASE 'https://s3.amazonaws.com/me/items/xxxxx/mydb.dump'

  
新しいやり方

1
heroku pg:backups restore 'https://s3.amazonaws.com/xxxxxx/mydb.dump' DATABASE_URL

  
DATABASE_URLは heroku config を打つとでてくるあれです。
実際のURLでなく DATABASE_URL のままでOKでした。

これでリストア完了。サクッといきますね。
以上です。

17
Shunsuke Sawada

おすすめの記事

Rails whereの検索で否定を使う
3
Railsを4.2にバージョンアップしたら、Vagrantのローカル開発環境にアクセスできなくなった問題
Railsのバリデーションエラー後にレイアウトが崩れるとき