The PostgreSQL advisor for teams that ship.
pgdba runs 68 read-only health checks against your Postgres 13–17 database, ranks what to fix first, and migrates databases server-to-server — nothing writes without an explicit flag.
Two commands to a healthier database
$ uv tool install pgdba
$ pgdba config init # probes your connection, writes pgdba-run.toml (chmod 600)
$ pgdba check # read-only check, zero flags
Advises, never surprises
Every session is a read-only transaction with a statement timeout. Remediation is printed, ranked, and only executed when you explicitly --apply it — per-action confirm included.
Safe lane migrations
Server-to-server migration with preflight gates (version, locale, extensions, disk, scope), confirm prompts, resume, and post-copy verification. Dry-run with --plan-only first.
Plain language by design
Every finding carries a why, a cost-of-ignoring, and an ignore-if. Every flag has a safe default you can look up from the terminal: pgdba check --explain-flag pooled.
Reach for pgdba when…
Your CI deploys blind
A pre-deploy gate that fails the pipeline when the database the diff is about to hit is unhealthy.
The app is slow and nobody knows why
One read-only run ranks what hurts, with remediation and ignore-if for every finding.
You are moving a database
Gates, resume, and verification — a junior can drive the cutover from the safe lane.