Heroku Postgres データベースをフォークする
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2022年12月15日(木)
Table of Contents
フォークすることにより、既存のデータベースの現時点のスナップショットを含む新しいデータベースが作成されます。フォロワーデータベースとは異なり、フォークには親データベースの最新の状態が維持されず、書き込むことができます。フォークは親データベースのパフォーマンスに影響しません。
フォークがサポートされているのは、Standard 層以上のデータベースプランだけです。Essential 層のデータベースからそれ以上の層のプランにアップグレードするための手順に従ってください。
ユースケース
フォークは親データベースのパフォーマンスに影響しません。
フォークしたデータベースは、本番のデータおよびスキーマを使用する際のリスクフリーの方法を提供します。たとえば、これらのデータベースを使用して新しいスキーマ移行をテストしたりアプリケーションを別のデータベースプランでテストすることができます。これらは、ある特定の時点のデータのスナップショットとして後で解析したり調査するときにも貴重です。
フォークを作成する
フォークは、フォロワーでない Standard、Premium、Private、または Shield のデータベースで作成できます。
短期間で新しくフォークされた別のデータベースからフォークを作成することはできません。この制限は、この記事に記載されている方法によって作成されたフォークと、フォロー解除を通じて作成されたフォークの両方に当てはまります。Fork/Follow
が Available
かどうかを確認するには、pg:info
コマンドを使用します。
フォークは親データベースと同じデータベースプランでなくてもかまいません。フォークはあらゆるプランで使用できますが、親データベースからのデータを格納するための十分なディスクスペースを確保する必要があります。
フォークの準備には、データセットのサイズに応じて、数分から数時間かかります。
データベースをフォークした後、フォークがアタッチされているアプリは新しい HEROKU_POSTGRESQL_COLOR_URL
環境変数を使用して更新されます。この環境変数の更新によりアプリが再起動されます。
CLI を使用して作成する
Heroku CLI の heroku addons:create
コマンドを使用して、フォークを作成できます。--fork
フラグで新しいデータベースアドオンをプロビジョニングします。フラグには以下のいずれかを指定します。
同じアプリのデータベースの環境変数名、
データベースアドオンの名前、
Heroku Postgres データベースの完全な URL、
または appname::HEROKU_POSTGRESQL_COLOR_URL
形式の引数。これにより、別のアプリにアタッチされているデータベースのフォークを作成できます。
$ heroku addons:create heroku-postgresql:standard-0 --fork HEROKU_POSTGRESQL_CHARCOAL_URL --app example-app
Adding heroku-postgresql:standard-0 on example-app... done, v71 ($50/mo)
Attached as HEROKU_POSTGRESQL_SILVER_URL
Database will become available after it completes forking
Use `heroku pg:wait` to track status
heroku pg:wait
コマンドによって、新規データベースのプロビジョニングステータスが出力されます。これを使用して、フォークが最新の状態になるタイミングを見極めます。
$ heroku pg:wait --app example-app
Waiting for database HEROKU_POSTGRESQL_SILVER_URL... available
Heroku Data Dashboard を使用して作成する
フォークを Web ダッシュボードから作成することもできます。
- data.heroku.com に移動します。
- 検索を使用して、フォークの作成元となるデータベースを選択します。
Settings
(設定) タブをクリックします。Fork Database...
(データベースをフォークする…) をクリックします。- フォークのプランを選択します。プランのサイズの選択に関する注記については、Create a Fork (フォークを作成する) セクションを参照してください。
Fork Database
(データベースをフォークする) をクリックします。
ダッシュボードには、フォークしたデータベースのステータスと、プロビジョニングが完了したときの更新情報が表示されます。
フォークファーストオプション
ファーストフォークは、最大で 30 時間前の古いデータである可能性があります。
CLI で --fast
フラグを使用して、フォークを速く作成できます。このオプションは、ご使用のデータベースに過去 30 時間大きな変更 (スキーマ移行や大きなデータインポートなど) がない場合に便利です。
$ heroku addons:create heroku-postgresql:standard-4 --fork HEROKU_POSTGRESQL_CHARCOAL --fast --app example-app
Adding heroku-postgresql:standard-4 on dashboard... done, v1022 ($1200/mo)
Attached as HEROKU_POSTGRESQL_BLUE_URL
Fork will contain data from 5/26/2021 at 13:56 UTC (about 16 hours old)
To create a fork with up-to-date data, exclude the `--fast` flag.
Database will become available after it completes forking
Use `heroku pg:wait` to track status.
Use `heroku addons:docs heroku-postgresql` to view documentation
フォークを削除する
CLI を使用して削除する
heroku addons:destroy
を使用してフォークをプロビジョニング解除する
このコマンドで必ず _URL
サフィックスをデータベース名から除去してください。
$ heroku addons:destroy HEROKU_POSTGRESQL_SILVER --app example-app
! WARNING: Destructive Action
! This command will affect the app: example-app
! To proceed, type "example-app" or re-run this command with --confirm example-app
Heroku Data Dashboard を使用して削除する
- data.heroku.com に移動します。
- 検索を使用して、削除するフォークデータベースを選択します。
Settings
(設定) タブをクリックします。Delete Database...
(データベースを削除する…) をクリックします。- 確認のためにアプリの名前を入力します。
Delete Database
(データベースを削除する) をクリックします。