Why does everyone run ancient Postgres versions?

Why many run “ancient” Postgres versions

  • Main theme: upgrading DBs is high‑risk, high‑effort, and offers little visible payoff if things already work.
  • Databases are central and stateful; failures mean data loss or long outages, so teams avoid touching them unless forced (security, EOL, new must‑have feature).
  • Regression testing across all dependent apps is expensive; many orgs won’t prioritize it over feature work.

Technical upgrade pain points

  • Major versions require pg_upgrade or dump/restore; format changes every year are seen as a “design fail” by some.
  • Upgrades often mean planned downtime; true zero‑downtime is complex even with replication and logical replication.
  • Logical replication helps with blue/green upgrades but:
    • Doesn’t cover all features (e.g., large objects, some DDL).
    • Requires manual schema sync and coordination with CDC systems.
  • Admin complaints: vacuum tuning, txid wraparound, index fragmentation, pg_hba.conf complexity, multiple versioned packages left around on Debian/Ubuntu.

Postgres vs MySQL/MariaDB and others

  • Pro‑Postgres arguments:
    • Transactional DDL, richer SQL and data types, good docs, extensions (PostGIS, LTREE), predictable behavior, UTF‑8 done “right”.
    • Perceived as correctness‑ and stability‑first, “boring” in a good way; no Oracle licensing baggage.
  • Pro‑MySQL/MariaDB arguments:
    • Easier replication, HA, and upgrades; fewer knobs like vacuum; “just works” feeling.
    • Galera‑style multi‑master and online OPTIMIZE TABLE praised.
  • Counterpoints:
    • MySQL’s history of data‑loss footguns, non‑transactional DDL, charset mess, Jepsen‑found anomalies.
    • Some DBAs say Postgres is actually easier to keep reliable; others say the opposite.

Security, support, and version age

  • Several note that Postgres supports each major for ~5 years; distros (e.g., Debian/Ubuntu, RHEL) pin a version for an OS release and backport security fixes.
  • Some only upgrade for security patches or when versions go EOL; others argue that infrequent big upgrades are riskier than regular small ones.

Culture, tooling, and hosting

  • Strong “if it ain’t broke, don’t fix it” and fear of being blamed for breaking prod.
  • Managed services (RDS, Aurora, Heroku, Neon) make minor/major upgrades much easier via blue‑green or auto‑upgrade, and some teams lean on that.
  • A minority actively practice frequent upgrades (often weekly) and report smooth Postgres 16→17 moves; others are still on 9.x or older.