l’aggiornamento di PostgreSQL dalla versione 11 alla 12 (per esempio)può essere fatto con i soliti
sudo apt-get update
sudo apt-get install postgresql-12 postgresql-server-dev-12
installando il nuovo pacchetto e modificando i file
/etc/postgresql/11/main/postgresql.conf
/etc/postgresql/12/main/postgresql.conf
modificando le porte, ma i dati ?
Dopo aver stoppato il servizio con un
sudo systemctl stop postgresql.service
eseguire questo comando come utente postgres
sudo su postgres
/usr/lib/postgresql/12/bin/pg_upgrade \
--old-datadir=/var/lib/postgresql/11/main \
--new-datadir=/var/lib/postgresql/12/main \
--old-bindir=/usr/lib/postgresql/11/bin \
--new-bindir=/usr/lib/postgresql/12/bin \
--old-options '-c config_file=/etc/postgresql/11/main/postgresql.conf' \
--new-options '-c config_file=/etc/postgresql/12/main/postgresql.conf' \
--check
una volta che tutto è a posto, possiamo eseguire la migrazione rieseguendo il comando di prima, ma SENZA il –check, cioè
/usr/lib/postgresql/12/bin/pg_upgrade \
--old-datadir=/var/lib/postgresql/11/main \
--new-datadir=/var/lib/postgresql/12/main \
--old-bindir=/usr/lib/postgresql/11/bin \
--new-bindir=/usr/lib/postgresql/12/bin \
--old-options '-c config_file=/etc/postgresql/11/main/postgresql.conf' \
--new-options '-c config_file=/etc/postgresql/12/main/postgresql.conf'
Avremo in questo modo fatto il dump del db, verificato la configurazioe ed importati i db della 11.
Ora si possono modificare i file di configurazione postgresql.conf e mettere le porte giuste.
Far ripartire il db con
sudo systemctl start postgresql.service
e verificare quale versione di postgresql è in esecuzione con questi comandi
sudo su postgres
psql -c “SELECT version();”
./analyze_new_cluster.sh
exit
infine fare un pò di pulizia
apt list –installed | grep postgresql
sudo apt-get remove postgresql-11 postgresql-server-dev-11
sudo rm -rf /etc/postgresql/11/
sudo su postgres
./delete_old_cluster.sh
Fatto !