Skip Navigation
Show nav
Heroku Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • コマンドライン
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリー
    • 継続的統合
  • 言語サポート
    • Node.js
    • Ruby
      • Bundler の使用
      • Rails のサポート
    • Python
      • Python でのバックグランドジョブ
      • Django の使用
    • Java
      • Maven の使用
      • Java でのデータベース操作
      • Play Framework の使用
      • Spring Boot の使用
      • Java の高度なトピック
    • PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres Getting Started
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
    • Heroku Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
    • コンプライアンス
  • Heroku Enterprise
    • Private Space
      • インフラストラクチャネットワーキング
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
    • シングルサインオン (SSO)
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Integrating with Salesforce
  • データベースとデータ管理
  • Heroku Postgres
  • Postgres の基礎
  • Heroku Postgres

Heroku Postgres

日本語 — Switch to English

この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。

最終更新日 2022年11月17日(木)

Table of Contents

  • Heroku Postgres プランについて
  • Heroku Postgres のプロビジョニング
  • ローカルの設定
  • プライマリデータベースの指定
  • アプリケーション間での Heroku Postgres の共有
  • バージョンのサポート
  • 従来のインフラストラクチャ
  • パフォーマンス分析
  • CLI の使用
  • Heroku Postgres への接続
  • プラン間の移行
  • データの所在
  • アドオンの削除
  • サポート

Heroku dyno、Heroku Postgres、および Heroku Data for Redis® の無料プランは 2022 年 11 月 28 日で提供を終了します​。詳細は、FAQ​ を参照してください。 資格のある学生の皆様は、新しい Heroku for GitHub Students プログラム​を通じてプラットフォームクレジットを申請できます。

Heroku Postgres​ は、Heroku が直接提供するマネージド SQL データベースサービスです。PostgreSQL ドライバーを使用して、Heroku が公式にサポートする​すべての言語を含むどの言語の Heroku Postgres データベースにもアクセスできます。

Heroku Postgres Dashboard

Heroku CLI から使用できるさまざまな管理コマンドに加え、Heroku Postgres には、Web ダッシュボード​、データクリップとクエリを共有​する機能、およびその他の複数の役立つ機能が用意されています。

Heroku Postgres プランについて

Heroku Postgres は、Essential、Standard、Premium、Private、Shield というサービスの異なる層にまたがる、さまざまなプランを提供しています。各プランが提供する内容の詳細については、「Choosing the Right Heroku Postgres Plan​」(適切な Heroku Postgres プランの選択) を参照してください。

Heroku Postgres プランの価格情報は、Heroku Postgres アドオンページ​で確認できます。

アプリの要件が最終的に、選択した初期プランで提供されたリソースより大きくなりすぎた場合、簡単にデータベースをアップグレード​できます。

Heroku Postgres のプロビジョニング

Heroku Postgres をプロビジョニングする前に、それがまだ​アプリに対してプロビジョニングされていないことを確認します。Heroku では、特定のライブラリ (pg​ Ruby gem など) を含むアプリに対して Postgres を自動的にプロビジョニングします。

heroku addons​ コマンドを使用して、アプリがすでに Heroku Postgres をプロビジョニングしているかどうかを判定します。

$ heroku addons
Add-on                                                      Plan   Price     State
──────────────────────────────────────────────────────────  ─────  ───────  ───────
heroku-postgresql (postgresql-concave-52656)                mini  $5/month   created

heroku-postgresql​ に、アプリのアドオンリストが表示されていない場合は、次の CLI コマンドでプロビジョニングできます。

$ heroku addons:create heroku-postgresql:<PLAN_NAME>

たとえば、Mini​ プランデータベースをプロビジョニングするには、次のように実行します。

$ heroku addons:create heroku-postgresql:mini
Creating heroku-postgresql:mini on ⬢ example-app... $5/month
Database has been created and is available
 ! This database is empty. If upgrading, you can transfer
 ! data from another database with pg:copy
Created postgresql-concave-52656 as DATABASE_URL

プロビジョニングコマンドに --version​ フラグを含めることで、プロビジョニングする Postgres のバージョンを指定できます。

$ heroku addons:create heroku-postgresql:<PLAN_NAME> --version=12

PostgreSQL バージョンのサポートの詳細を確認してください。

選択したプランに応じて、データベースは使用可能になるまでに最長 5 分かかることがあります。heroku pg:wait​ コマンドでステータスを追跡できます。このコマンドは、データベースが使用できるようになるまでブロックします。

プロビジョニングプロセスの一部として、DATABASE_URL​ 環境設定がアプリの設定に追加されます。DATABASE_URL​ には、アプリがデータベースにアクセスために使用する URL が含まれています。アプリにすでに Heroku Postgres データベースがあり、別の​ものをプロビジョニングしている場合は、この環境設定の名前が代わりに HEROKU_POSTGRESQL_<COLOR>_URL​ (HEROKU_POSTGRESQL_YELLOW_URL​ など) という形式になります。

heroku config​ コマンドで、アプリの環境設定の名前および値を確認できます。

アプリの DATABASE_URL​ 環境設定の値は、いつでも変化する可能性があります。 Heroku アプリの内部または外部のどちらでも、この値に依存しないでください。

この時点で、空の PostgreSQL がプロビジョニングされます。既存のデータソースからデータを入力するには、インポート手順​を参照するか、この記事の言語固有の手順に従って、アプリケーションから接続してください。

ローカルの設定

  • Mac の設定
  • Windows の設定
  • Linux の設定

Heroku では、Postgres をローカルで実行して環境間でのパリティを確保​することをお勧めします。ローカル環境で PostgreSQL をインストールするための複数の事前にパッケージ化されたインストーラーがあります。

Postgres がインストールされ、接続できるようになったら、アプリがローカルでの実行時にそこに接続できるように、DATABASE_URL 環境変数をエクスポートする必要があります。

-- for Mac and Linux
$ export DATABASE_URL=postgres://$(whoami)
-- for Windows
$ set DATABASE_URL=postgres://$(whoami)

Postgres は (インストールの一部として設定されている) ユーザーアカウント名に一致するローカルデータベースに接続します。

Postgres on Mac の設定

Postgres.app は Mac OS 10.7 以上を必要とします。

  1. Postgres.app​ をインストールし、設定手順に従います。
  2. Postgres CLI ツール​をインストールします。
  3. 新しいターミナルウィンドウを開いて、変更内容が保存されたことを確認します。
  4. 正しく機能したことを確かめます。OS X バージョンの psql​ は、Postgres.app​ ディレクトリを含むパスを指している必要があります。

バージョン 10 を使用している場合、出力は次のようになります。

$ which psql
/Applications/Postgres.app/Contents/Versions/latest/bin/psql

次のコマンドは正しく機能します。

$ createdb
$  psql -h localhost
psql (10.14)
Type "help" for help.
=# \q

アプリはログイン時に自動的に​開始するように設定されていることも確認します。

PostgreSQL には、pg_dump​ や pg_restore​ を含む、いくつかの有効なバイナリが付属しています。これらをどのターミナルセッションでも使用できるようにするには、Postgres.app に付属している /bin​ ディレクトリを PATH に (できれば .profile​、.bashrc​、.zshrc​ などに) 追加します。

PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

Postgres on Windows の設定

​Windows インストーラー​を使用して、Postgres on Windows をインストールします。

必ず、Postgres インストールの bin​ ディレクトリを追加するように、PATH 環境変数を更新してください。このディレクトリは C:\Program Files\PostgreSQL\<VERSION>\bin​ と同様です。heroku pg:psql​ などのコマンドは PATH に依存し、PATH が正しくない場合は機能しません。

Postgres on Linux の設定

パッケージマネージャから Postgres をインストールします。使用する実際のパッケージマネージャーコマンドは、ディストリビューションによって異なります。次は、Ubuntu、Debian、その他の Debian から派生したディストリビューションで機能します。

$ sudo apt-get install postgresql

ディストリビューションにパッケージマネージャーがないか、または Postgres パッケージを使用できない場合は、いずれかの​汎用インストーラ​を使用して Linux に Postgres をインストールします。

psql​ クライアントは通常、/usr/bin​ にインストールされます。

$ which psql
/usr/bin/psql

次のコマンドは正しく機能します。

$ psql
psql (9.3.5)
Type "help" for help.
maciek# \q

プライマリデータベースの指定

DATABASE_URL​ 環境設定は、アプリのプライマリ Heroku Postgres データベースの URL を指定します。1 つのデータベースを持つアプリの場合は、その URL がこの環境設定に自動的に割り当てられます。

複数の Postgres データベースを持つアプリの場合は、heroku pg:promote​ でプライマリデータベースを設定します。一般的なユースケースには、リーダー/フォロワー高可用性設定​、またはデータベースアップグレードプロセス​の一部が含まれます。

アプリケーション間での Heroku Postgres の共有

heroku addons:attach​ コマンドを使用して、単一の Heroku Postgres データベースを複数のアプリ間で共有できます。

$ heroku addons:attach my-originating-app::DATABASE --app example-app
Attaching postgresql-addon-name to example-app... done
Setting HEROKU_POSTGRESQL_BRONZE vars and restarting example-app... done, v11

アタッチされたデータベースの URL は、名前形式 HEROKU_POSTGRESQL_[COLOR]_URL​ で環境設定に割り当てられます。上記の例では、環境設定の名前は HEROKU_POSTGRESQL_BRONZE_URL​ です。

共有されるデータベースは、必ずしも、共有されるいずれか特定のアプリのプライマリデータベースではありません。他のデータベースに使用した同じコマンド​で、共有されたデータベースをプロモートします。

heroku addons:detach​ コマンドを使用して、別のアプリとの Heroku Postgres インスタンスの共有を停止できます。

$ heroku addons:detach HEROKU_POSTGRESQL_BRONZE --app example-app
Detaching HEROKU_POSTGRESQL_BRONZE to postgresql-addon-name from example-app... done
Unsetting HEROKU_POSTGRESQL_BRONZE config vars and restarting example-app... done, v11

バージョンのサポート

PostgreSQL プロジェクトは毎年、新しいメジャーバージョンをリリースします。それぞれのメジャーバージョンは、リリースの直後に Heroku Postgres によってサポートされます。

Heroku Postgres は、その時々で少なくとも 3 つのメジャーバージョンをサポートしています。Heroku では現在、Postgres バージョン 14 をデフォルトとして提供しています。現在サポートされているバージョンは、次のとおりです。

プラン バージョン ステータス EOL 日
Essential 9.6 非推奨​ 2021-11-11
Essential 10 非推奨​ 2022-11-10
Essential 11 使用可能 2023-11-09
Essential 12 使用可能 2024-11-14
Essential 13 使用可能 2025-11-13
Essential 14 使用可能 (デフォルト) 2026-11-12
Standard 以上 9.6 非推奨​ 2021-11-11
Standard 以上 10 非推奨​ 2022-11-10
Standard 以上 11 使用可能 2023-11-09
Standard 以上 12 使用可能 2024-11-14
Standard 以上 13 使用可能 2025-11-13
Standard 以上 14 使用可能 (デフォルト) 2026-11-12

ユーザーは、おおよそ 3 年に 1 回アップグレードするように要求されます。ただし、データベースの PostgreSQL バージョンをどの時点でもアップグレードして最新バージョンの利点を得ることができます。

Heroku Postgres での PostgreSQL バージョンの非推奨プロセスは、その EOL 日の 1 年前に始まります。非推奨プロセスは、Changelog​ 経由で発表されます。

サポートされている古い PostgreSQL バージョンでデータベースを作成するには、addons:create​ コマンドで –version フラグ​を使用します。

非推奨のデータベースの移行

PostgreSQL プロジェクトは、最初のリリースから 5 年後​に、メジャーバージョンのサポートを停止します。Heroku Postgres は、これらのバージョンを非推奨にして、PostgreSQL のサポートされていないメジャーバージョンでデータベースが実行しないようにします。

独自のスケジュールで互換性をテストし、予期しない問題に関する計画を立て、データベースを移行できるように、サポートが終了する前にバージョンアップグレード​を実行することを強くお勧めします​。

Essential 層のデータベース

バージョンのサポート終了 (EOL) の 1 年前に、Heroku は、非推奨バージョンでの新しい Essential 層データベース​のプロビジョニングを止めます。

その時点で、Heroku は、非推奨バージョンで実行されている Essential 層データベースの使用可能な最後のデフォルトバージョンへの移行を開始します。

Standard 層以上のデータベース

  • バージョンのサポート終了 (EOL) の 1 年前に、Heroku は、影響を受けるデータベースの非推奨プロセスについてメール経由で顧客に通知します。
  • EOL の 6 か月前に、Heroku は、非推奨バージョンでの新しい Standard 層以上のデータベースのプロビジョニングを止めます。既存のデータベースのフォークとフォロワーの作成は許可されます。
  • EOL の 1 か月前に、Heroku は、引き続き非推奨バージョンで実行されているデータベースの強制アップグレードメンテナンスをスケジュールします。

従来のインフラストラクチャ

Heroku ではまた、場合によっては、次の理由でインフラストラクチャの古いバージョンも非推奨にします。

  • データベースの下で実行されているオペレーティングシステムがセキュリティ更新の受信を停止する。
  • オペレーティングシステムのサポートが経過期間のために実用的でなくなった (必要なパッケージやパッチが使用できなくなるか、またはサポートが困難になった)。
  • サーバーインスタンスが、Heroku の現在のインフラストラクチャとは大幅に異なるためにサポートが非現実的になった。

データベースが従来のインフラストラクチャで実行しているかどうかを確認するには、pg:info​ を使用します。

$ heroku pg:info

=== DATABASE_URL, HEROKU_POSTGRESQL_IVORY_URL
Plan:                  Standard 0
Status:                Available
Data Size:             8.09 MB
Tables:                0
PG Version:            12.5
Connections:           7/120
Connection Pooling:    Available
Credentials:           1
Fork/Follow:           Available
Rollback:              earliest from 2021-01-24 18:59 UTC
Created:               2020-12-01 02:27
Region:                us
Data Encryption:       In Use
Continuous Protection: On
Forked From:           HEROKU_POSTGRESQL_SILVER
Maintenance:           not required
Maintenance window:    Wednesdays 21:30 to Thursdays 01:30 UTC
Add-on:                postgresql-cubed-48277

パフォーマンス分析

パフォーマンス分析についての詳細は、「Heroku Postgres のパフォーマンス分析​」を参照してください。

CLI の使用

CLI を使用した Heroku Postgres の管理についての詳細は、「CLI を使用した Heroku Postgres の管理​」を参照してください。

Heroku Postgres への接続

Heroku Postgres への接続についての詳細は、「Heroku Postgres への接続​」を参照してください。

プラン間の移行

データベースプラン間の更新および移行​に関するこの詳細なガイドを参照してください。

データの所在

データベースがプロビジョニングされると、そのデータベースに関連付けられたデータは、それが作成されるリージョン内で保管されます。ただし、Heroku Postgres に付随するサービスや、このデータベース群を管理するシステムは、プロビジョニングされたデータベースと同じリージョン内に配置されない可能性があります。

  • ディザスタリカバリーの Postgres Continuous Protection​ は、データベースが置かれている同じリージョンにベースバックアップおよびログ先行書き込みを保管します。
  • アプリケーションログは、Logplex​ にルーティングされ、米国でホスティングされます。アプリケーションのログに加えて、これにはシステムログ​と、アプリケーションにアタッチされたすべてのデータベースの Heroku Postgres ログ​が含まれます。
  • Heroku Postgres クエリおよびエラーのログ記録は、heroku addons:create heroku-postgres:...​ でデータベースを作成するときに --block-logs​ フラグを使用することによってブロックできます。
  • PG バックアップ​スナップショットは米国で保管されます。別のリージョン内の論理バックアップを取得するには、「Heroku Postgres の論理バックアップ​」を参照してください。
  • データクリップは米国で保管されます。

ログのブロック

アドオン作成時に、データベースに対して実行されるクエリのログ記録を防止するためにフラグを渡すことができます。このオプションが有効になっている場合は、データベースがプロビジョニングされた後に、それを無効にすることはできません。有効になった後、それを無効にする必要がある場合は、新しいデータベースへの移行が必要になります。

ログ内のクエリをブロックすると、アプリケーションをデバッグしたり、アプリケーションパフォーマンスをチューニングしたりするのに役立つ Heroku の機能が低下します。

$ heroku addons:create heroku-postgresql:standard-0 -a example-app --block-logs

アドオンの削除

Heroku Postgres データベースを破棄するには、アドオンを削除する必要があります。

$ heroku addons:destroy heroku-postgresql

同じ種類のデータベースが 2 つある場合は、その環境設定名を使用してアドオンを削除する必要があります。たとえば、HEROKU_POSTGRESQL_GRAY_URL​ を削除するには、次のように実行します。

heroku addons:destroy HEROKU_POSTGRESQL_GRAY

削除されたデータベースが DATABASE_URL​ で使用されていたのと同じものであった場合は、その DATABASE_URL​ 環境設定がアプリで設定解除されます。

データベースを、破棄された後に再設定することはできません。PG バックアップ​を使用するか、またはデータをエクスポートする​ことによって、事前にデータのスナップショットを取得してください。

サポート

すべての Heroku Postgres サポートおよびランタイムの問題は、Heroku サポートチャネル​のいずれかを介して送信する必要があります。

関連カテゴリー

  • Postgres の基礎
適切な Heroku Postgres プランの選択 Heroku Postgres フォロワーデータベース

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Podcasts
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing

Subscribe to our monthly newsletter

Your email address:

  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Heroku Podcasts
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Facebook
  • Instagram
  • Github
  • LinkedIn
  • YouTube
Heroku is acompany

 © Salesforce.com

  • heroku.com
  • Terms of Service
  • Privacy
  • Cookies
  • Cookie Preferences