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