CapyDB Docs
GuidesImports & Migrations

Migrate from Render

Move a Render Postgres database into CapyDB.

Get the source connection string

In the Render dashboard: open the Postgres instance → Info page → Connections section. Render shows:

  • Internal Database URL — only reachable from services in the same Render region. Not usable for the import.
  • External Database URL — reachable from the internet. Use this one. It looks like:
postgres://user:password@dpg-xxxxxxxxxxxx-a.frankfurt-postgres.render.com/dbname

Render-specific caveats

  • Access control: Render Postgres has an IP allow-list ("Access Control"). The default allows all (0.0.0.0/0); if yours was tightened, the import will time out — temporarily allow public access (or contact support for the importer's address situation) for the duration of the copy.
  • TLS: external connections require TLS; the importer applies sslmode=require automatically if the URL does not specify it.
  • Plan expiry: free Render databases expire after 90 days — if you are migrating off one for that reason, do the import before the expiry date, not on it.

Preflight

capydb import preflight --source-url "postgres://user:password@dpg-....render.com/dbname"

Import

Pause writers, then:

capydb import --source-url "postgres://user:password@dpg-....render.com/dbname" --recreate --wait

After the import

  1. Spot-check sequences.
  2. \dx for extensions.
  3. ANALYZE;
  4. Update DATABASE_URL in your Render services' environment (or wherever the app runs), deploy, and watch Observability.