11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

heroku postgresのバックアップ/データ移行のコマンド一覧

Last updated at Posted at 2019-08-03

この記事では、herokuのpostgresのバックアップ関連で使うコマンドを一覧で紹介しています。
後半では、pg:copyを使ったプラン変更時のデータ移行のコマンドを実行順に紹介しています。

参考: Heroku PGBackups

heroku-postgresの情報を確認する

heroku pg:info --app sushi

バックアップに使うコマンド類


# マニュアルバックアップする(--verbose フラグで実行ログを見られます)
heroku pg:backups capture --app sushi

# バックアップをキャンセルする
heroku pg:backups:cancel --app sushi

# バックアップを削除する
heroku pg:backups:delete b999 -a sushi

# JST 午前0時にバックアップをスケジュールする
heroku pg:backups schedule DATABASE_URL --at '00:00 Asia/Tokyo' --app sushi

# スケジュールを確認する
heroku pg:backups schedules --app sushi

# スケジュールを削除する
heroku pg:backups unschedule DATABASE_URL --app sushi

# heroku上のバックアップデータからリストアする
heroku pg:backups restore b999 DATABASE_URL --app sushi

# sushiからsashimiへバックアップデータを使ってリストアする
heroku pg:backups restore sushi::b999 DATABASE_URL --app sashimi --confirm sashimi

# AWS S3などにアップ済みのバックアップファイルをURLで指定してリストアする
heroku pg:backups:restore 'https://s3.amazonaws.com/me/items/sushi_backup.dump' DATABASE_URL -a sushi

# バックアップの公開URLを取得する
heroku pg:backups public-url --app sushi

# バックアップのdumpファイルをローカルに取得する
heroku pg:backups:download  --app sushi

# 実行中のバックアッププロセスを確認する
heroku pg:psql -c "select * from pg_stat_activity where application_name = 'Heroku Postgres Backups'" --app sushi

heroku pg:copy を使った新しいプランへのデータ移行の一連のコマンド

  • pg:copyコマンドは、データサイズは10Gまでの制限があります。
  • 10Gを超える場合は、同一アプリ内ならpg:upgradeが利用できるようです。
  • 別アプリへのデータ移行は、バックアップファイルからリストア先を変更してコピーすることもできます。

# 新しいプランのpostgresが追加されている前提です
# 新しいデータベースでtimezoneを設定する
heroku pg:psql -a sushi
$ show timezone;
$ alter database your_database_name set timezone = 'Asia/Tokyo';
$ select current_timestamp;
$ \q

# DATABASE_URLのアタッチが正しいか確認する
heroku config -a sushi | grep DATABASE

# メンテナンスモードにする
heroku maintenance:on -a sushi

# ワーカーがあれば停止しておく
# heroku schedulerを使っていればはGUIから停止する
heroku ps:scale worker=0 -a sushi

# バックアップを取る
heroku pg:backups capture DATABASE_URL -a sushi

# バックアップを確認する
heroku pg:backups -a sushi

# pg:copyでデータを新しいデータベースへコピーする
heroku pg:copy DATABASE_URL {NEW_DB_NAME} -a sushi

# 新しいデータベースを昇格させる
heroku pg:promote {NEW_DB_NAME} -a sushi

# 昇格されたのを確認する
heroku config -a sushi | grep DATABASE

# バックアップスケジュールを確認する
heroku pg:backups schedules -a sushi

# 新しいpostgresの方でバックアップを取る
heroku pg:backups -a sushi

# ワーカーを再開する
# heroku schedulerはGUIから再開する
heroku ps:scale worker=1 -a sushi

# メンテナンスモードをオフにする
heroku maintenance:off -a sushi

# 古いデータベースを削除する
heroku addons:destroy {OLD_DB_NAME} -a sushi

postgresのデータの他のアプリケーションへのコピー

# sushiアプリ から sashimiアプリ へデータをコピーする
heroku pg:copy sushi::DATABASE_URL DATABASE_URL --app sashimi

データベースのアタッチとデタッチ

# データベースをattachする
heroku addons:attach my-originating-app::DATABASE --app sushi

# データベースをdetachする
heroku addons:detach HEROKU_POSTGRESQL_BRONZE --app sushi
11
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?