shg25 / rnsite

raisyumo-nanitozo!!
Apache License 2.0
0 stars 0 forks source link

DBのリストアを試す #143

Closed shg25 closed 1 year ago

shg25 commented 2 years ago

いざってときのためにやってみておく

shg25 commented 2 years ago

相談したメモ

スケジュール設定をSTGでテストするコード

$ heroku pg:backups:schedule DATABASE_URL --at '02:00 Asia/Tokyo' --app rnsite-stg

あとはDATABASE_URLを変える

shg25 commented 2 years ago

Heroku CLIで本番のDBをローカルにリストアしてみる

バックアップを作成 → 確認

$ heroku pg:backups:capture --app [app名]
$ heroku pg:backups --app [app名]

バックアップがダウンロードできるURLを取得

$ heroku pg:backups:url [バックアップID] --app [app名]

ローカルの開発環境のDBにリストアする

$ pg_restore -U postgres -d [DB名] [バックアップデータのファイルパス]

作成したバックアップをHerokuのConsoleで確認

Herokuでapp選択 → Overview:Installed add-ons → heroku-postgresql Durability → MANUAL BACKUPS & DATA EXPORTS

スケジュール

スケジュール確認

$ heroku pg:backups:schedules --app [app名]

スケジュール設定(まだやってないので後で挙動確認)

$ heroku pg:backups:schedule DATABASE_URL --at '05:00 Asia/Tokyo' --app [app名]
shg25 commented 2 years ago

Heroku PGBackups(公式ドキュメント) https://devcenter.heroku.com/ja/articles/heroku-postgres-backups

PLAN : hobby-dev バックアップ件数:2 保持される週次バックアップ件数:1週間 保持される月次バックアップ件数:0ヶ月

復元とかDB間コピーのコマンドもあり

shg25 commented 2 years ago

stgのスケジュールを5時にしてみたので様子見

shg25 commented 2 years ago

数日経過

ID    Created at                 Status                               Size     Database
────  ─────────────────────────  ───────────────────────────────────  ───────  ────────
a003  2022-07-16 20:02:33 +0000  Completed 2022-07-16 20:02:35 +0000  78.57KB  DATABASE
a002  2022-07-15 20:01:25 +0000  Completed 2022-07-15 20:01:27 +0000  78.57KB  DATABASE
b001  2022-07-08 12:38:01 +0000  Completed 2022-07-08 12:38:03 +0000  78.45KB  DATABASE

b001が手動、a002a003がスケジュール このまま1週間分aXXXが増えるのかな

引き続き見てみる

shg25 commented 1 year ago

スケジュールについては想定通りの結果に (想定より1日多い気がするけど)

$ heroku pg:backups --app [アプリ名]
=== Backups
ID    Created at                 Status                               Size     Database
────  ─────────────────────────  ───────────────────────────────────  ───────  ────────
a092  2022-10-13 20:01:02 +0000  Completed 2022-10-13 20:01:04 +0000  78.79KB  DATABASE
a091  2022-10-12 20:02:30 +0000  Completed 2022-10-12 20:02:33 +0000  78.79KB  DATABASE
a090  2022-10-11 20:01:20 +0000  Completed 2022-10-11 20:01:22 +0000  78.79KB  DATABASE
a089  2022-10-10 20:00:50 +0000  Completed 2022-10-10 20:00:52 +0000  78.79KB  DATABASE
a088  2022-10-09 20:03:48 +0000  Completed 2022-10-09 20:03:49 +0000  78.79KB  DATABASE
a087  2022-10-08 20:03:12 +0000  Completed 2022-10-08 20:03:18 +0000  78.79KB  DATABASE
a086  2022-10-07 20:03:12 +0000  Completed 2022-10-07 20:03:17 +0000  78.79KB  DATABASE
a085  2022-10-06 20:03:46 +0000  Completed 2022-10-06 20:03:47 +0000  78.79KB  DATABASE
b001  2022-07-08 12:38:01 +0000  Completed 2022-07-08 12:38:03 +0000  78.45KB  DATABASE
shg25 commented 1 year ago

リモートDB(Heroku Postgres)にリストア → STGで試す

https://devcenter.heroku.com/ja/articles/heroku-postgres-import-export#import-to-heroku-postgres

HTTP でアクセス可能な URL の場所にアップロードする必要があります。

ローカルに持ってるデータを使うならドキュメントの通りS3でプリサインURLが良さそう。

今回はバックアップを使うので以下の手順でやってみた

バックアップがダウンロードできるURLを取得

$ heroku pg:backups:url [バックアップID] --app [app名]

そのURLを以下にセットしてリストア実行

$ heroku pg:backups:restore '[URL]' DATABASE_URL --app [アプリ名]
shg25 commented 1 year ago

リストアとか別DBに付け替えとかするとログイン中のユーザーもログアウトするので事前にお知らせする