Versions and upgrades
PostgreSQL 16, 17 and 18 are supported. The major is fixed for the life of a service, how to move to a newer one, and when a major is retired.
A service runs PostgreSQL 16, 17 or 18, chosen when it is created. New services default to 18.
The major version is fixed for the life of a service. Moving to a newer major means a new service and a cutover you plan.
Check what you are running
- Open the service. The minor version installed on its host is shown on the service page, and in the services list.
Or ask the server:
SELECT version();
SHOW server_version;Move to a newer major
-
Create a new service on the target version. See create your first service.
-
Take a dump from the old service, using the
pg_dumpfrom the newer version:bashpg_dump --format=custom --no-owner --no-privileges --file=appdb.dump \ "postgresql://[email protected]:25439/appdb?sslmode=verify-full&sslrootcert=system" -
Create your roles on the new service, then restore:
bashpg_restore --dbname="postgresql://[email protected]:25441/appdb?sslmode=verify-full&sslrootcert=system" \ --no-owner --no-privileges --jobs=4 appdb.dump -
Run
ANALYZEon the new service. -
Check your application against it.
-
Point your application at the new service.
The two ports above are different because the two services are. Each service is given its own pair in its location, and each one is on that service's Connect tab. Both commands use the direct port, so a long dump or restore does not occupy a pooled server connection for its duration.
Plan the cutover as downtime. Anything written to the old service after the dump is not in the new one. The full command set, including the flags that matter, is on dump and restore.
Before you move
- Check every extension you use is in the supported extensions catalogue, and that the extension itself supports the target version.
- Read the upstream release notes for behaviour changes, especially around planner defaults.
- Take an export first, so the point immediately before the move is trivially recoverable. See exporting.
- Rehearse the dump and restore into a spare service, and run your application against it before the real cutover.
Minor updates
Minor releases are bug and security fixes and do not change on-disk format. Applying one means installing the new binaries and restarting the service, so it is planned work: announced at least 72 hours ahead and run inside the service's maintenance window. See maintenance windows.
End of support
We support the three newest PostgreSQL majors. Upstream supports each major for five years, and a major is supported here for as long as it receives upstream security fixes. A major is retired only after its upstream end of life, with at least six months' notice and a supported way to upgrade off it.
What you will see
A restore into a new major reports nothing unusual if your schema is portable. Read the last line of
pg_restore output: it carries on past a failed statement by default and reports how many errors it
ignored at the very end, so a partial restore can look finished.
pg_restore: warning: errors ignored on restore: 3Three ignored errors is a restore you have to inspect, not a restore that worked.
Troubleshooting
pg_restore reports ignored errors. Read them. The usual causes are an extension not in the
catalogue, an object owned by a role that does not exist on the target, or something needing
superuser. See compatibility notes.
unsupported version in file header. The dump was taken with a pg_dump older than the target
server. Use a pg_dump at least as new as the server you are restoring into.
Queries are slower on the new service. Run ANALYZE. A freshly restored database has no
statistics, and "the new database is slow" is nearly always this.
Text sorts differently after the move. A collation change alters sort order. See compatibility notes.