PostgreSQL 15 end of life (11 November 2027): the upgrade path to 18 or 19

PostgreSQL 15 ends 11 Nov 2027; RDS bills extended support from 1 Mar 2028, Cloud SQL from 1 Feb 2028. Move to 18, or to 19 once your provider offers it.

Read time
18 min
Word count
2.6K
Sections
12
FAQs
8
Share
Two database engineers review a printed upgrade checklist beside a server rack, with the PostgreSQL elephant logo shown
On this page · 12 sections
  1. What ends on 11 November 2027
  2. Managed service dates: RDS, Aurora, Azure and Cloud SQL
  3. What extended support costs
  4. Choosing the target: PostgreSQL 18 or 19
  5. pg_upgrade or logical replication
  6. What breaks between 15 and 18 or 19
  7. Extension compatibility
  8. Worked example: the cost of staying on 15
  9. India, data residency and compliance
  10. The upgrade runbook
  11. How eCorpIT can help
  12. References

Summary. PostgreSQL 15 gets its final community release on 11 November 2027, five years after 15.0 shipped on 13 October 2022; after that there are no fixes, security fixes included. Amazon RDS and Aurora end standard support on 29 February 2028 and bill RDS Extended Support from 1 March 2028 to 28 February 2031. AWS charges $0.100 per vCPU-hour in US East for every PostgreSQL version now in Extended Support, doubling in year three, but has not yet listed a rate for 15. Cloud SQL enrols 15 instances in extended support on 1 February 2028 at $0.07 per vCPU-hour in Iowa and upgrades leftovers from 1 February 2031. Azure ends standard support on 11 November 2027 and has not yet scheduled extended support for 15. The target is PostgreSQL 18, supported to 14 November 2030, or PostgreSQL 19, at release candidate 1 with general availability planned for 19 November 2026. Use pg_upgrade when minutes of downtime are acceptable and logical replication when they are not, minding its gaps: no DDL, no large objects and, from a 15 source, no sequences. Our view: take 18 if you move before mid-2027, and 19 later in 2027 once your provider and your extensions support it.

About this article. This is for teams running PostgreSQL 15 on Amazon RDS, Aurora, Azure, Cloud SQL or their own servers. On 7 November 2026 we checked every date, price and behaviour against postgresql.org and the AWS, Microsoft and Google Cloud documentation, pricing pages and price catalogues. Providers revise calendars and prices, so re-check before you book a change window. This is not legal or financial advice; the DPDP Act reference is to the text published in the Gazette of India on 11 August 2023, and no vendor paid for inclusion. Researched with AI assistance and reviewed by our editorial team.

Python 3.11, common in the same estates, loses security support in October 2027; see our Python 3.11 end of life runbook.

What ends on 11 November 2027

The PostgreSQL Global Development Group supports each major version for five years, then ships one final minor release. PostgreSQL 14 gets its final release on 12 November 2026, the next scheduled update date, which also brings a new 15 minor. The project's table on 7 November 2026:

Version First release Current minor Final release
14 30 Sep 2021 14.24 12 Nov 2026
15 13 Oct 2022 15.19 11 Nov 2027
16 14 Sep 2023 16.15 9 Nov 2028
17 26 Sep 2024 17.11 8 Nov 2029
18 25 Sep 2025 18.6 14 Nov 2030
19 GA planned 19 Nov 2026 RC1 (15 Oct 2026) Not yet published

PostgreSQL 19 is later than usual. The release team chose to fold the fixes from the 12 November update release into 19, so RC2 is due that day and GA is planned for 19 November unless a problem forces a delay. RC1 was still current on 7 November. The policy points to an end of life around November 2031; the project has not published it.

End of life does not stop a running server; it stops the fixes. You can skip intervening major versions, but the project asks you to read every intervening release note first. From 15 to 18 that means 16, 17 and 18; to 19, one more.

Managed service dates: RDS, Aurora, Azure and Cloud SQL

The provider calendars on 7 November 2026:

Service End of standard support for 15 Extended support Extended support ends Newest major offered
Amazon RDS for PostgreSQL 29 Feb 2028 Year-1 pricing from 1 Mar 2028; year-3 pricing from 1 Mar 2030 28 Feb 2031 18, since 14 Nov 2025; new majors within 30 days of x.1
Amazon Aurora PostgreSQL 29 Feb 2028 Same dates as RDS 28 Feb 2031 18, since 11 Jun 2026; new majors within 8 months of x.1
Azure Database for PostgreSQL flexible server 11 Nov 2027 Up to three years, automatic enrolment; 15 not yet listed Not yet listed for 15 18, since 25 Sep 2025
Cloud SQL for PostgreSQL Regular support until 1 Feb 2028 Three years, automatic enrolment, from 1 Feb 2028 Deprecation and auto-upgrade from 1 Feb 2031 18 (default); new majors within 90 days of GA

That hints at 19's arrival. If 19 ships on 19 November, Cloud SQL's 90 days run to about 17 February 2027. AWS counts from 19.1; if that ships on 11 February 2027, RDS follows by about 13 March 2027 and Aurora by about October 2027. That is our arithmetic, not an announcement. Microsoft publishes no commitment, though it offered 18 on the community release day.

Amazon RDS and Aurora

RDS moves 15 into Extended Support on 1 March 2028, with year-three pricing from 1 March 2030 and an end on 28 February 2031. Aurora uses the same dates and names 15.10 as its long-term support minor for 15.

Two details matter before 2028. Minors expire before majors: RDS supports 15.19 only until September 2027, so keep patching 15 while you plan. And the RDS pricing FAQ says an instance must be on the latest minor to receive Extended Support.

Azure Database for PostgreSQL flexible server

Microsoft lists 11 November 2027 as the end of Azure standard support for 15, matching the community date. Extended support adds up to three years with automatic enrolment and no exit except upgrading, and its table covers 11 to 14 only. For 14, Azure now lists 31 January 2027, 80 days after the community date; a similar buffer for 15 is possible but unannounced. Plan against 11 November.

Its FAQ adds a point that applies everywhere: the engine upgrade leaves noncore extensions such as pgvector and TimescaleDB for you to update.

Cloud SQL for PostgreSQL

Cloud SQL puts PostgreSQL 15 into extended support on 1 February 2028 and deprecates it on 1 February 2031. On deprecation, Cloud SQL upgrades remaining instances to the default major version during maintenance, after at least 12 months' notice. Extended support covers critical and high-severity CVEs, keeps SLA coverage and still allows new 15 instances.

What extended support costs

Rates come from AWS's price list files (29 October 2026), Azure's retail prices API and pricing page, and Google's pricing page.

Provider Unit Years 1 and 2 Year 3 What is billed
Amazon RDS and Aurora, provisioned vCPU-hour $0.100 US East; $0.114 Mumbai (rate for 10 to 13; 15 not yet listed) $0.200; $0.228 Mumbai Primary, Multi-AZ standbys and read replicas; no Reserved Instance discount
Aurora Serverless v2 ACU-hour $0.085 US East (Ohio); $0.097 Mumbai (listed for 15) $0.170; $0.194 Mumbai Serverless capacity (ACUs)
Cloud SQL for PostgreSQL vCPU-hour $0.07 Iowa; HA $0.14 $0.14; HA $0.28 Per second while running; replicas at standalone rate; no committed use discount
Azure flexible server vCore-hour $0.07 East US; $0.098 Central India Twice the year 1 and 2 rate Running servers only; HA and replica metering undocumented

AWS says the rate depends on Region, version and year; its examples and every provisioned PostgreSQL rate it lists today (10 to 13) are $0.100 and $0.200 in US East, so use $0.100 for 15 until AWS lists it. Microsoft now states that year three costs twice the year one and two rate. All of these come on top of instance, storage and backup costs.

Choosing the target: PostgreSQL 18 or 19

Skip 16 and 17: they end in November 2028 and 2029, one or two years before 18, for the same testing effort.

Pick PostgreSQL 18 if Pick PostgreSQL 19 if
You upgrade before mid-2027, while 19 is young and patchily available You upgrade in late 2027 and your provider runs 19 at GA
Your provider already runs 18 (all four services do today) You want support to about November 2031 instead of 14 November 2030
You need extensions certified for 18 now You want REPACK (CONCURRENTLY), sequence replication and parallel autovacuum
Aurora is your platform: Aurora 18 came seven months after 18.1, so 19 may land late in 2027 You can absorb 19's extra incompatibilities (below) in the same test cycle

Frameworks set floors too. The draft Django 6.2 release notes drop PostgreSQL 15 and require 16 or later, with 6.2 expected in April 2027. A Django application on 15 must move the database before taking that LTS; see our Django 6.2 LTS guide.

pg_upgrade or logical replication

You can cross major versions by dump and restore, pg_upgrade, or logical replication into a new cluster. Dump and restore is simple and slow; above tens of gigabytes the choice is between the other two. The table draws on the PostgreSQL and AWS documentation.

Factor pg_upgrade (in place) Logical replication (side by side)
Downtime Usually minutes in link, clone or swap mode Seconds to minutes at cutover
Rollback Restore from backup or snapshot; in link or swap mode the old cluster cannot safely be restarted Keep the old primary and point traffic back
Schema changes during migration Not applicable DDL is not replicated; freeze schema changes
Sequences Carried over Not replicated from 15; set at cutover (RDS Blue/Green does it for you)
Large objects Carried over Not replicated
Tables without primary keys No issue UPDATE and DELETE need a primary key or a replica identity
Managed equivalent In-place major upgrade on all four services RDS Blue/Green; a self-built subscriber elsewhere

pg_upgrade from 15: four things to know

  1. Checksums must match. PostgreSQL 18 changed initdb to enable data checksums by default, and pg_upgrade requires matching checksum settings. If your 15 cluster has checksums off, initialise the new cluster with --no-data-checksums, or enable them on the old cluster offline with pg_checksums first.
  1. Statistics now survive. From 18, pg_upgrade carries planner statistics across, though not extended statistics. The documentation then has you run vacuumdb twice, as in the runbook below.
  1. Logical slots do not survive from 15. PostgreSQL 17 taught pg_upgrade to migrate logical replication slots and subscriptions, but only when the old cluster is 17 or later; slots on older clusters are silently ignored. From 15, Debezium and other CDC consumers lose their slots and need a planned resync.
  1. Use the fast modes. --link hard-links data files, --clone uses copy-on-write where the file system supports it, 17 added --copy-file-range, and 18 added --swap, which moves directories instead of copying files. 18 also runs its pre-upgrade checks in parallel with --jobs.

Logical replication: near-zero downtime, with gaps

Logical replication streams row changes from the 15 publisher into an 18 or 19 subscriber, and you cut over when lag is near zero. AWS's Blue/Green limitations page is the most candid list of what goes wrong, and most of it applies elsewhere. DDL or a GRANT on the source degrades replication to the new (green) side, and you must recreate the deployment. Large objects are not replicated. Materialised views are not refreshed. The apply process is single-threaded, so a write-heavy source can outrun it. pg_partman must be disabled on the source and pg_cron kept off on the target, and point-in-time recovery history does not carry over after switchover.

PostgreSQL 19 replicates sequence values, but only from a 19 or later publisher, so from 15 you sync sequences yourself at cutover.

What breaks between 15 and 18 or 19

The release notes for 17, 18 and 19 list these incompatibilities, among others. Read 16's notes as well.

Arriving in 17:

  • Functions run with a safe search_path during maintenance such as REINDEX and materialised view refresh, so expression indexes and materialised views on functions that rely on an unqualified search_path can fail.
  • old_snapshot_threshold and the adminpack extension are removed.

Arriving in 18:

  • initdb enables data checksums by default (see above).
  • MD5 passwords are deprecated and setting one now warns. Move roles to SCRAM.
  • VACUUM and ANALYZE process inheritance children by default; COPY FROM no longer treats \. as end-of-file in CSV files; unlogged partitioned tables are disallowed; AFTER triggers run as the role active when the event was queued.
  • Full text search uses the cluster's default collation provider. On clusters that default to ICU or the builtin provider, reindex full text search and pg_trgm indexes after pg_upgrade.

Arriving in 19:

  • RADIUS authentication is removed.
  • standard_conforming_strings is forced on; dumps made by older pg_dump with it off will not load properly, so dump with 19's tools.
  • pg_upgrade refuses clusters with btree_gist indexes on inet or cidr columns, and clusters whose database, role or tablespace names contain carriage returns or line feeds.
  • JIT is off by default; analytics-heavy sites must turn it back on.
  • Successful MD5 logins now produce a warning.

Extension compatibility

Extensions are where managed upgrades fail. AWS says most are not upgraded with the RDS engine, and Microsoft says the same of noncore extensions. Three rules cover most cases:

  1. The target must offer your extension. Compare pg_extension on 15 with your provider's list for 18 or 19; a missing library fails the pg_upgrade checks.
  1. Some extensions block specific paths. Azure lists them by source and target. A 15 to 18 move is blocked by pgrouting, pg_diskann, azure_ai, azure_storage, azure_local_ai and pg_failover_slots; session_variable, anon and age block every path; pg_repack, hypopg and pg_partman must be dropped and recreated. TimescaleDB is allowed from 15 to 18. Run Azure's pre-upgrade validation for your exact path.
  1. Update after the engine. Run ALTER EXTENSION ... UPDATE for each extension once the new engine is up, and re-test anything with its own on-disk structures, such as vector indexes. Our Postgres vector search guide covers pgvector and its relatives.

Worked example: the cost of staying on 15

Take one database with an 8-vCPU primary, an 8-vCPU high-availability standby and an 8-vCPU read replica, left on 15 past each cut-off, at 730 hours a month:

  • Amazon RDS, US East (Ohio), Multi-AZ with one standby plus a replica: 24 vCPUs × $0.100 × 730 = $1,752 a month from 1 March 2028, or $21,024 a year, if 15 gets today's rate; $3,504 a month from 1 March 2030.
  • Cloud SQL, Iowa, HA primary plus a replica: 8 HA vCPUs × $0.14 × 730 = $817.60, plus 8 vCPUs × $0.07 × 730 = $408.80, for $1,226.40 a month from 1 February 2028, replicas being billed at the standalone rate; $2,452.80 in year three.
  • Azure flexible server, East US, primary only: 8 vCores × $0.07 × 730 = $408.80 a month, or $572.32 in Central India at $0.098, doubling in year three. Microsoft does not document how HA standbys and replicas are metered, so ask your account team.

These surcharges recur monthly until you upgrade, and double in year three on all three clouds.

India, data residency and compliance

Indian regions cost more. RDS Extended Support in Mumbai is $0.114 per vCPU-hour, 14% above Ohio, so the RDS example becomes 24 × $0.114 × 730 = $1,997.28 a month. Azure Central India is 40% above East US. Teams that keep personal data in India by policy or contract cannot move region to save, so cut vCPUs instead: consolidate small 15 instances before the cut-off. An engine without community fixes is also hard to square with the reasonable security safeguards duty in section 8(5) of the Digital Personal Data Protection Act 2023, and with GDPR Article 32. Our DPDP Act engineering playbook covers the wider controls.

The upgrade runbook

  1. Inventory every 15 cluster: provider, region, vCPUs, replicas, HA, extensions, logical slots and cut-off date.
  1. Pick 18 or 19 per cluster and record its end-of-life date.
  1. Patch 15 to the latest minor to stay in support while you plan.
  1. Run the checks below and fix tables without primary keys, MD5 roles, search_path-dependent functions and blocked extensions.
  1. Rehearse on a restored copy with production-sized data, and time it.
  1. Choose the method: in-place pg_upgrade in a maintenance window, or logical replication with a schema freeze.
  1. After cutover: update extensions, rebuild statistics, reindex full text search and pg_trgm indexes where needed, and recreate CDC slots.
  1. Decommission 15, including snapshots that would restore onto an end-of-life engine.

The managed commands follow the AWS, Azure and Google Cloud upgrade documentation.


            # Pre-flight checks on the PostgreSQL 15 cluster
psql -c "SHOW data_checksums;"
psql -c "SELECT extname, extversion FROM pg_extension ORDER BY 1;"
psql -c "SELECT slot_name, slot_type, plugin FROM pg_replication_slots;"
psql -c "SELECT rolname FROM pg_authid WHERE rolpassword LIKE 'md5%';"   # superuser only; managed services restrict pg_authid

# Self-managed (example paths): dry run, then a link-mode upgrade from 15 to 18
pg_upgrade -b /usr/lib/postgresql/15/bin -B /usr/lib/postgresql/18/bin \
  -d /var/lib/postgresql/15/main -D /var/lib/postgresql/18/main --check --jobs 4
pg_upgrade -b /usr/lib/postgresql/15/bin -B /usr/lib/postgresql/18/bin \
  -d /var/lib/postgresql/15/main -D /var/lib/postgresql/18/main --link --jobs 4
vacuumdb --all --analyze-in-stages --missing-stats-only --jobs 4
vacuumdb --all --analyze-only --jobs 4

# Managed services: list targets and run prechecks, then upgrade in place
aws rds describe-db-engine-versions --engine postgres --engine-version 15.19 \
  --query "DBEngineVersions[].ValidUpgradeTarget[?IsMajorVersionUpgrade].EngineVersion"
aws rds modify-db-instance --db-instance-identifier mydb --engine-version 18.6 \
  --allow-major-version-upgrade --apply-immediately
az postgres flexible-server upgrade --name mydb --resource-group my-rg --version 18 --validate-only
az postgres flexible-server upgrade --name mydb --resource-group my-rg --version 18
gcloud sql instances pre-check-major-version-upgrade mydb --target-database-version=POSTGRES_18
gcloud sql instances patch mydb --database-version=POSTGRES_18
          

How eCorpIT can help

eCorpIT is a Gurugram-based technology organisation, founded in 2021, assessed at CMMI Level 5 and MSME certified, with senior-led engineering teams working across AWS, Microsoft and Google platforms. Our PostgreSQL major version upgrade service covers inventory, extension audits, rehearsals and cutovers on RDS, Aurora, Azure, Cloud SQL and self-managed clusters. Talk to us at /contact-us/.

Last updated: 7 November 2026.

References

  1. Versioning policy — PostgreSQL Global Development Group
  1. Release calendars for Amazon RDS for PostgreSQL — Amazon Web Services
  1. Release calendars for Aurora PostgreSQL — Amazon Web Services
  1. Amazon RDS for PostgreSQL pricing, including RDS Extended Support and FAQs — Amazon Web Services
  1. AWS Price List, Amazon RDS offer file for US East (Ohio), published 29 October 2026 — Amazon Web Services
  1. Cloud SQL for PostgreSQL database versions and version policies — Google Cloud
  1. Cloud SQL pricing, extended support pricing — Google Cloud
  1. Azure Database for PostgreSQL flexible server version policy — Microsoft Learn
  1. Azure Database for PostgreSQL extended support — Microsoft Learn
  1. PostgreSQL 19 RC 1 Released, 15 October 2026 — PostgreSQL Global Development Group
  1. Roadmap, upcoming minor releases — PostgreSQL Global Development Group
  1. Upgrading a PostgreSQL cluster (PostgreSQL 18 documentation, section 18.6) — PostgreSQL Global Development Group
  1. Extended support for Cloud SQL for PostgreSQL — Google Cloud
  1. AWS Price List, Amazon RDS offer file for Asia Pacific (Mumbai), published 29 October 2026 — Amazon Web Services
  1. Azure Retail Prices API, Azure Database for Postgres Extended Support meters — Microsoft
  1. Azure Database for PostgreSQL flexible server pricing, Extended Support — Microsoft Azure
  1. Django 6.2 release notes (under development, expected April 2027) — Django Software Foundation
  1. Logical replication restrictions (PostgreSQL 18 documentation, section 29.8) — PostgreSQL Global Development Group
  1. pg_upgrade (PostgreSQL 18 documentation) — PostgreSQL Global Development Group
  1. Limitations and considerations for Amazon RDS blue/green deployments — Amazon Web Services
  1. Release notes for PostgreSQL 18 — PostgreSQL Global Development Group
  1. Release notes for PostgreSQL 17 — PostgreSQL Global Development Group
  1. Logical replication upgrade (PostgreSQL 18 documentation, section 29.13) — PostgreSQL Global Development Group
  1. Replicating sequences (PostgreSQL 19 documentation, section 29.7) — PostgreSQL Global Development Group
  1. Release notes for PostgreSQL 19 (draft as of 9 October 2026) — PostgreSQL Global Development Group
  1. Choosing a major version for an RDS for PostgreSQL upgrade — Amazon Web Services
  1. Major version upgrades in Azure Database for PostgreSQL — Microsoft Learn
  1. The Digital Personal Data Protection Act, 2023 (Gazette of India, 11 August 2023) — Ministry of Electronics and Information Technology
  1. Regulation (EU) 2016/679 (General Data Protection Regulation), Article 32 — EUR-Lex
  1. az postgres flexible-server upgrade, Azure CLI reference — Microsoft Learn
  1. Upgrade the database major version in place, Cloud SQL for PostgreSQL — Google Cloud

Frequently asked

Quick answers.

01 When exactly does PostgreSQL 15 reach end of life?
The PostgreSQL versioning policy lists 11 November 2027 for the final PostgreSQL 15 release, five years after 15.0 shipped on 13 October 2022. After that minor release the community publishes no more fixes for 15, security fixes included. Servers keep running, but every newly found vulnerability becomes yours to manage.
02 Should I upgrade from PostgreSQL 15 to 18 or to 19?
Choose 18 if you move before mid-2027: it is supported until 14 November 2030 and runs on RDS, Aurora, Azure and Cloud SQL today. Choose 19 if you move later in 2027, once your provider offers it and your extensions support it, for roughly one more year of support.
03 Can I upgrade straight from PostgreSQL 15 to 18 without stopping at 16 and 17?
Yes. The PostgreSQL project says you can skip intervening major versions with pg_upgrade or a dump and restore, but asks you to read the release notes of every version in between first. For a move from 15 to 18 that means the migration sections for 16, 17 and 18.
04 What will RDS Extended Support cost for PostgreSQL 15?
Billing starts on 1 March 2028. AWS has not yet listed a PostgreSQL 15 rate, but every version now in Extended Support costs $0.100 per vCPU-hour in US East for years one and two and $0.200 in year three. Primaries, Multi-AZ standbys and read replicas are all billed, with no Reserved Instance discount.
05 Is pg_upgrade or logical replication better for a PostgreSQL 15 upgrade?
Use pg_upgrade when a window of minutes is acceptable: it carries sequences, large objects and, when the target is 18 or later, planner statistics. Use logical replication when downtime must be near zero, accepting that DDL, large objects and sequences from a 15 source are not replicated, and that a busy source can outrun the apply process.
06 Why does pg_upgrade to PostgreSQL 18 fail with a checksum mismatch?
PostgreSQL 18 turns on data checksums by default when you run initdb, and pg_upgrade needs both clusters to match. If your 15 cluster was created without checksums, initialise the 18 cluster with the no-data-checksums option, or switch checksums on in the old cluster offline with pg_checksums before you upgrade.
07 Do my PostgreSQL extensions upgrade automatically?
No. AWS says most extensions are not upgraded during an RDS major version upgrade, and Microsoft says noncore extensions such as pgvector and TimescaleDB need manual updates. Confirm each extension exists for the target version, check your provider's list of blocked extensions, then run ALTER EXTENSION UPDATE after the engine upgrade and re-test.
08 What happens to Cloud SQL instances left on PostgreSQL 15?
Cloud SQL enrols them in paid extended support on 1 February 2028, at $0.07 per vCPU-hour in Iowa for years one and two and $0.14 in year three, double for high-availability instances. From 1 February 2031 Google deprecates 15 and upgrades remaining instances to the default major version during maintenance.

About the author

Manu Shukla

Founder & Director

Founder of eCorpIT. Hands-on engineer leading senior-only delivery for AI apps, custom software, and cloud systems for global clients.

Subscribe

One engineering note a week. No fluff, no spam.

Senior-architect playbooks on AI agents, mobile apps, cloud, security, data, and marketing — delivered every Wednesday.

Past the reading

Read enough. Let's build something.

A senior architect responds in 24 working hours with scope, indicative cost, and a timeline. NDA before any technical conversation.

Loading search…

Browse all guides