外部サービスで使用しているPostgresqlのデータベースをHeroku Postgresにリストアする
🕟

外部サービスで使用しているPostgresqlのデータベースをHeroku Postgresにリストアする

Created
May 10, 2022 09:31 AM
Tags
基本的にはHerokuのドキュメントに全て書いてある。https://devcenter.heroku.com/articles/heroku-postgres-backups
AWS EC2のRailsアプリケーションをHerokuに移行した時のデータベースのコピーしたので、手順をメモしておく。

AWSサービス側での操作

  1. メンテナンス画面にした後、冗長化してあるWEBサーバーを止めて1台のシングル構成に。
  1. パブリックディレクトリ(Herokuがアクセスできる場所)にPostgresqlのダンプファイルを作成する。念のため、ファイル名は乱数にでもしておく。
PGPASSWORD=$PG_PASSWORD pg_dump -Fc --no-acl --no-owner -U $PG_USER -h $PG_HOST -p $PG_PORT $PG_DATABASE -f /var/www/app/current/public/xxxxxxxxxx.dump

Heroku側での操作

heroku pg:backups:restore 'https://www.app.com/xxxxxxxxxx.dump' DATABASE_URL --app=app-name --confirm=app-name
これでHerokuにDBがコピーされるので、ドメインをHerokuに向けてメンテナンスを解除する。

注意

heroku pg:backups:restore を実行すると、URLにアクセスできなかったなどの理由でリストアに失敗した場合でもHeroku Postgres のデータベースは削除されてしまう。