Postgres vs MySQL in Production: Replication, Backups, Pooling, and HA (2026)
Every section includes honest “this is genuinely harder on this side” annotations. No hand-waving.
Replication
Streaming (physical) replication. Logical replication (PG 10+, mature by 16-17). Logical replication failover (PG 17). Failover via Patroni, Stolon, repmgr.
Binlog replication (statement / row / mixed) — the most battle-tested replication system in production. Group Replication (5.7+). InnoDB Cluster (built on Group Replication).
Backup tooling
pg_basebackup (physical), pg_dump / pg_dumpall (logical), pgBackRest (continuous archiving), WAL-G, Barman.
mysqldump (logical), Percona XtraBackup (physical, hot backup), MySQL Enterprise Backup (Oracle-proprietary).
Point-in-time recovery (PITR)
WAL-based PITR: restore to any LSN or timestamp. Tools: pgBackRest, WAL-G, Barman.
Binlog-based PITR: restore by binlog position or GTID. Combination of physical backup + binlog replay.
Connection pooling
Forks a new OS process per connection by default (expensive at scale). PgBouncer is near-universal in production. Modes: session / transaction / statement — each with tradeoffs (prepared statements, LISTEN/NOTIFY break in transaction mode).
Thread-pool plugin (community + Enterprise editions). ProxySQL (open-source). Per-connection cost is lower than Postgres by default.
High availability
Patroni + etcd (canonical HA solution). pg_auto_failover. repmgr. Cloud: RDS Multi-AZ, Aurora Postgres, Cloud SQL HA.
InnoDB Cluster + MySQL Router (Oracle). MHA (MySQL Master HA, older). Vitess (sharded HA). Cloud: RDS Multi-AZ, Aurora MySQL, Cloud SQL HA.
Sharding: Vitess vs Citus
Citus (Microsoft-supported, open-source). Strong HTAP and analytics. Younger track record than Vitess.
Vitess (YouTube origin, Linux Foundation). Strong sharded OLTP. YouTube, Slack, GitHub, Booking.com battle-tested.
Operational pain summary
| Pain area | Postgres | MySQL |
|---|---|---|
| Connection scaling | PgBouncer needed at scale; setup and mode tradeoffs | Less acute; thread-pool available |
| VACUUM / autovacuum tuning | Real ongoing tuning at high update workloads | Not applicable (no MVCC bloat) |
| Replication consistency under partition | Strong (streaming replication is synchronous option) | Group Replication had issues (Jepsen 2023) |
| Open backup tooling | pgBackRest, WAL-G, Barman — all open | XtraBackup (Percona) is the open option; Enterprise Backup is proprietary |
| Stored procedure ecosystem | Multi-language: PL/pgSQL, PL/Python, PL/V8, PL/Perl | SQL only; no embedded scripting languages |
| Online DDL | CONCURRENTLY for index creation; some heavy ops need pg_repack | Online DDL with documented limits by operation type |
| Replication setup learning curve | Patroni + etcd is not trivial; improving in managed options | Binlog replication is extremely well-trodden |
Amber cells indicate the harder side per area.
Platform engineering cost (DBA teams, on-call, tooling): platformengineeringcost.com | Hiring DBAs for each: engineeringhiringcost.com