AIイノベーションズ
Railway/Guides

PostgreSQL

RailwayでPostgreSQLデータベースをデプロイする方法を学びます。

著者: AIイノベーションズ 阿部隼也X / Twitter

Railwayはこちら

PostgreSQL

RailwayのPostgreSQLデータベーステンプレートを使用すると、設定なしでPostgreSQLデータベースをプロビジョニングして接続できます。

デプロイ

ctrl / cmd + k メニューを使用するか、プロジェクトキャンバスの + New ボタンをクリックして、プロジェクトにPostgreSQLデータベースを追加します。

テンプレートマーケットプレイスからテンプレートを介してデプロイすることもできます。

デプロイされたサービス

デプロイすると、プロジェクトでPostgreSQLサービスが実行されます。これは、Docker Hubの公式Postgresイメージをベースとして使用するRailwayのSSL対応Postgresイメージからデプロイされます。

接続

PostgreSQLサービスで利用可能になった環境変数を参照することで、プロジェクトの別のサービスからPostgreSQLサーバーに接続します。

  • PGHOST
  • PGPORT
  • PGUSER
  • PGPASSWORD
  • PGDATABASE
  • DATABASE_URL

注:多くのライブラリは自動的に DATABASE_URL 変数を探してPostgreSQLへの接続に使用しますが、これらの変数はご自身の都合のよい方法で使用できます。

外部接続

デフォルトで有効になっているTCPプロキシを使用することで、PostgreSQLに外部から(デプロイされているプロジェクトの外部から)接続することが可能です。

TCPプロキシを使用する場合、ネットワーク出力に対して課金されることに注意してください。

デプロイメントの変更

デプロイされたコンテナはDocker Hubの公式PostgreSQLイメージからビルドされたイメージに基づいているため、Docker Hubの指示に基づいてデプロイメントを変更できます。

また、Railway postgres-sslリポジトリをフォークしてニーズに合わせてカスタマイズしたり、リポジトリでPRを開いたりすることをお勧めします。

バックアップと可観測性

特に本番環境では、定期的なバックアップの実行とデータベースの健全性の監視が不可欠です。追加を検討してください:

  • バックアップ:障害発生時のデータ復旧を確実にするために、定期的なバックアップを自動化します。ネイティブのバックアップ機能を確認することをお勧めします。
  • 可観測性:データベースのパフォーマンスと健全性に関する洞察を得るためにモニタリングを実装します。まだ可観測性スタックを実行していない場合は、これらのテンプレートを確認して、構築を開始するのに役立ててください。

拡張機能

デフォルトテンプレートのシンプルさを維持するため、このガイドで説明するPostgreSQLテンプレートに拡張機能を追加する予定はありません。

PostGISやTimescaleなどの最も人気のある拡張機能については、テンプレートマーケットプレイスにいくつかのオプションがあります。

Postgres構成の変更

ALTER SYSTEM コマンドを使用してPostgres構成を変更できます。

ALTER SYSTEM SET shared_buffers = '2GB';
ALTER SYSTEM SET effective_cache_size = '6GB';
ALTER SYSTEM SET maintenance_work_mem = '512MB';
ALTER SYSTEM SET work_mem = '32MB';
ALTER SYSTEM SET max_worker_processes = '8';
ALTER SYSTEM SET max_parallel_workers_per_gather = '4';
ALTER SYSTEM SET max_parallel_workers = '8';

-- 構成をリロードして変更を保存
SELECT pg_reload_conf();

SQLを実行した後、変更を有効にするにはデプロイメントを再起動する必要があります。

デプロイメントの3点メニューの Restart ボタンをクリックして、デプロイメントを再起動できます。

SHMサイズの増加

SHMサイズは、コンテナで使用可能な共有メモリの最大量です。

デフォルトでは64MBに設定されています。

次のエラーが発生した場合は、SHMサイズを変更する必要があります -

ERROR: could not resize shared memory segment "PostgresSQL.1590182853" to 182853 bytes: no space left on device

サービス変数に RAILWAY_SHM_SIZE_BYTES 変数を設定することで、SHMサイズを変更できます。

この変数はバイト単位の数値であるため、使用したいサイズに変換する必要があります。

たとえば、SHMサイズを500MBに増やすには、変数を 524288000 に設定します。

追加リソース

これらのテンプレートは便宜のために利用できますが、管理されていないと見なされ、その設定とメンテナンスを完全に制御できます。

機能と効果的な使用方法をより深く理解するために、ソースドキュメントを参照することを強くお勧めします。開始に役立つリンクをいくつか紹介します。

Railwayはこちら

PR