ローカルのデータベースをherokuにリストアする
テスト環境でデータもつくってしまって、本番環境にあげたいなんてこともあります。
すぐ忘れるのでメモしておこう。ドキュメント通り。
追記 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.
詳しくはこちらですが、
大きな違いとしては、 pgbackups
→ heroku 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でした。
これでリストア完了。サクッといきますね。
以上です。