Skip to content

Instantly share code, notes, and snippets.

@gnzsnz
Created March 17, 2024 15:54
Show Gist options
  • Save gnzsnz/3fce24dc1b67e0a9f28eb8c54f4bee43 to your computer and use it in GitHub Desktop.
Save gnzsnz/3fce24dc1b67e0a9f28eb8c54f4bee43 to your computer and use it in GitHub Desktop.
Upgrade Postgres cluster

Install latest version

sudo apt install postgresql-16 postgresql-client-16

List clusters

sudo pg_lsclusters

output

Ver Cluster Port Status Owner    Data directory              Log file
15  main    5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log
16  main    5433 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log

drop the newly created cluster (which should be empty)

sudo pg_dropcluster 16 main --stop

verify

sudo pg_lsclusters

output

Ver Cluster Port Status Owner    Data directory              Log file
15  main    5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log

upgrade the existing cluster to the latest version

sudo pg_upgradecluster 15 main

verify

sudo pg_lsclusters

output

Ver Cluster Port Status Owner    Data directory              Log file
15  main    5433 down   postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log
16  main    5432 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log

drop old cluster

sudo pg_dropcluster 15 main

remove old version packages

sudo apt purge postgresql-15 postgresql-client-15

verify, cluster version 16 is up and running

sudo pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
16  main    5432 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment