データベースのお引越し - heroku バックアップを取る
背景
Twitter APIの有料化に伴い、個人開発したサービスの運用を変えることにしました。
思い入れのあるサービスのため、閉じる予定は今の所なく、herokuでの管理をやめようと思いますのでデータベースをひとまずバックアップ取ろうと思った次第です。
本記事では、herokuでサービスの本番環境データベースのバックアップの流れを書き留めておきたいと思います
DBのバックアップを取る
herokuに接続
コマンドラインでHerokuにログインします。
heroku login
herokuのgoenbakoのDBにアクセスします。
# 実行 heroku pg:psql -a goenbako # 結果 --> Connecting to postgresql-rectangular-13114 psql (14.7 (Homebrew)) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help.
指定したgoenbakoのデータベース以外の全ての接続を切断します。
# 実行 SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '<データベース名>' AND pid <> pg_backend_pid(); # 結果 pg_terminate_backend ---------------------- (0 rows
バックアップ
ターミナルに戻って heroku pg:backups:capture
コマンドを実行します。
Heroku 上のデータベースがバックアップされます。
# 実行 heroku pg:backups:capture -a goenbako # 結果 Starting backup of postgresql-rectangular-13114... done Use Ctrl-C at any time to stop monitoring progress; the backup will continue running. Use heroku pg:backups:info to check progress. Stop a running backup with heroku pg:backups:cancel. Backing up DATABASE to b003... done
次にheroku pg:backups:download
コマンドを実行すると、Heroku 上の最新のバックアップがダウンロードされます。ダウンロードされたファイルは、.dump
拡張子を持っています。
# 実行 heroku pg:backups:download -a goenbako # 結果 Getting backup from ⬢ goenbako... done, #3 Downloading latest.dump... ████████████████████████▏ 100% 00:00 138.63KB
バックアップ - 拡張子をSQLファイルに変換
.dump ファイルは Postgres バックアップファイルの1つであり、通常はSQL形式でエクスポートされますが、Herokuの場合はカスタム形式です。 pg_restore を使用して .dump ファイルをSQL形式に変換することができます。
# 実行 pg_restore -f goenbako_backup.sql latest.dump
以上でデータベースのバックアップは完了です!
これで別のデータベースにもアップロードすることでバックアップデータを復元することができます。
本番環境データのため、慎重に扱いましょう。
おわりに
コメント
本記事の内容は以上になります!
参考になったり学びのきっかけになりますと幸いです。
間違いがありましたら修正いたしますので、ご指摘ください。
興味があれば他の記事も更新していきますので是非ご覧になってください♪
プログラミングスクールのご紹介 (卒業生より)
お世話になったプログラミングスクールであるRUNTEQです♪
こちらのリンクを経由すると1万円引きになります。
RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。
もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。