Yanonoblog!

こつこつと

データベースのお引越し - 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です♪

https://runteq.jp/r/ohtFwbjW

こちらのリンクを経由すると1万円引きになります。

RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。

もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。

https://twitter.com/outputky