PG Backups を使った DB のインポート

開発環境の DB の中身を本番環境 (Heroku) の DB にインポートする手順。詳しくは https://devcenter.heroku.com/articles/heroku-postgres-import-export を参照。開発環境の DB は Postgres.

1. 開発環境の DB を dump する。

% PGPASSWORD=myapp_password pg_dump -Fc --no-acl --no-owner -h localhost -U myapp_user myapp_db > mydb.dump

2. dump したファイルを Heroku から HTTP でアクセスできる場所に置く。

ドキュメントには Amazon S3 がおすすめとあるが、私は Dropbox の Public フォルダに置いた。

% mv mydb.dump ~/Dropbox/Public

3. リストアコマンドを実行する。

% heroku pgbackups:restore DATABASE {mydb.dump の URL}

4. リストア後、アプリを再起動させる。

アプリを再起動しないと「PGError: ERROR: operator does not exist: character...」の様なエラーが発生するので。

% heroku restart