Tech

2025

Render PostgreSQL無料枠が切れてからNeonへ乗り換える手順

Render.comのPostgreSQL無料枠(1ヶ月)が期限切れとなったため、Neon(PostgreSQL)へ移行した手順記録。

概要

Render.comでデプロイしたRailsアプリにおいて、 RenderのPostgre無料枠(1ヶ月)が期限切れとなったため、 Neon(PostgreSQL)へ移行しました。

本記事では、

  • 無料枠期限切れ時の挙動
  • データがない状態での移行手順
  • Render側で必要な設定変更 についてまとめます。

注記 ⚠️ Renderでデプロイ済みのアプリにおいて、DBサーバーのみを移行したい人向け ⚠️ 今回は開発中でDB接続済みですが機能未実装でDB未使用だったため、ダンプ作業等は行っていません。必要に応じて調べてください

環境

  • Ruby on Rails
  • Render.com(Web Service)
  • Render Postgre(Free → Expired)
  • Neon(PostgreSQL)

発生した事象

RenderのDB無料枠は作成から約1ヶ月で期限切れになります。 放置していたら、1ヶ月を超過しました。

期限切れ後、連携したGitHubのリモートリポジトリを編集するとデプロイエラー。 RenderのWebサービス側の「Events」ページに、「Deploy failed」を確認。

ログを確認すると、やはりDB接続エラー。

RenderのDBサービス側を確認すると、「expired(期限切れ)」、状態は「suspended(一時停止中)」 となっており、以下の案内が表示されていました(以下翻訳)。

・「データベースの有効期限が切れています。再開するには有料インスタンスにアップグレードしてください」 ・「14日以内に有料インスタンスへアップグレードしない場合、データベースとすべてのデータが削除されます」

※Webサービス自体は起動するが、DB接続エラーによりデプロイが失敗する点に注意

移行を決めた理由

  • RenderのDB無料枠は短い(1ヶ月)
  • 期限切れ後は有料化しないと復旧できない
  • 今後も個人開発を続ける予定だった(そして有料化はくるしい)

ということで、今回は Neon(PostgreSQL) に移行することにしました。

※NeonはサーバーレスなPostgresデータベースを提供するDBaaS(Database as a Service)です。東京リージョンはなし。無料枠あり(補足に記載)

移行方針

今回の対応方針は以下です。

  • Neonの無料枠を利用する
  • DBにデータは存在しないため、ダンプは不要
  • Rails側のコード変更は行わない
  • バックエンドサーバーは引き続きRenderを使う

NeonでのDB作成

1.公式サイトにアクセス。

2.「Start for free」をクリック。

3.「Create your free account(アカウント作成)」。※私はGitHub連携

4.Neonの管理画面から新規プロジェクトを作成します。 「New Poject」→ Create project画面で下記設定

  • Project name:my-app-db のように適宜
  • Postgres version:※今回デフォルトまま
  • Cloud service provider:※今回デフォルトまま
  • Region:Singapore ※今回はRender(Web Service)にあわせてRegionをシンガポールに

5.Render接続に必要な情報をコピーします。 「Connect」→ psql欄のconnection stringの''内をコピー or 「Copy snippet」でコピペして、''内をコピー

Render側の設定変更

1.Renderの管理画面から、Web Serviceの Environment Variables を開く。

2.「Edit」を選択し、以下の設定を行う。

  • DATABASE_URL:コピーしたNeonのconnection stringの''内で上書き

※今回Rails側の変更特になし (GEMFILEで'pg'、config/database.ymlを一応確認、デプロイ時に対応済み)

動作確認

環境変数を保存すると、自動で再デプロイが走ります。

以下を確認しました。

  • RenderのログにDB接続エラーが出ていないこと
  • アプリケーションが正常に起動すること
  • Webページが問題なく表示されること

以上をもって、Neonへの移行完了としました。

補足:CU, CU-hour, CU-hours / project

  • CU(Compute Unit) =CPUとメモリ量をまとめた データベースの性能サイズを表す単位 例:1 CU = 1 vCPU + 4GB RAM

  • CU-hour(CU時間) =CU × 利用時間(時間)で計算されるリソース使用量の単位 例:2CUのDBを3時間稼働 → 6CU-hours消費

  • CU-hours / project =1プロジェクトあたりのCU-hours月間利用量 例:100CU-hours/project無料 → 1プロジェクトあたり月100CU-hoursまで無料で利用できる

※CUは「データベースのパワー」、CU-hourは「そのパワーをどれくらいの時間使ったか」を表す指標です。

補足:Neonの無料プラン(2025年12月時点)

100 projects 100 CU-hours per project 0.5 GB per project Sizes to 2 CU(8 GB RAM)

100プロジェクト、プロジェクトあたり100CU時間、ブランチあたり0.5GBのストレージ、5GBのエグレス(送信)が含まれます。