Come aggiornare PostgreSQL da versione 9.5 a 9.6 su Ubuntu 16.04

By Daniele, on Ott 2016

Mentre stavo aggiornando vari software sul mio droplet di DigitalOcean, ho notato che c'era una versione più recente di PostgreSQL 🐘 ed ho dunque deciso di migrare le mie app di Rails così che potessero usufruire di quest'ultima release del popolare database opensource.

Inizialmente pensavo sarebbe stato un procedimento lungo e fastidioso, ma in fondo si è rivelato abbastanza semplice. Ecco i passi che ho usato per aggiornare la mia versione di PostgreSQL:

1. Fate un backup del vostro database

Il primo passo è di fare un backup del vostro database. Io lo faccio usando un file chiamato ~/.pgpass con il seguente contenuto:

#hostname:port:database:username:password
localhost:5432:myapp_prod:myuser:s3cuRep@ssword
Potete poi eseguire il codice seguente:
$ pg_dump --no-password latuaapp_prod > /home/iltuo_user/latuaapp_prod.pgsql
PostgreSQL dovrebbe automaticamente rilevare il file .pgpass e creare un "dump" o backup completo del database che specificate (ad esempio latuaapp_prod).

2. Fermate l'esecuzione del servizio PostgreSQL

Un semplice

$ sudo /etc/init.d/postgresql stop
può bastare.

3. Installate l'ultima versione di PostgreSQL

Assicuratevi d'avere l'ultima versione di PostgreSQL e le sue dipendenze:

$ sudo apt-get install postgresql-9.6

4. Aggiornate il cluster

Dovete prima rimuovere il cluster sulla nuova versione di Postgres per assicurarvi che sia vuota, poi dovete eseguire un comando per attuare l'aggiornamento:

$ sudo pg_dropcluster --stop 9.6 main
$ sudo pg_upgradecluster -v 9.6 9.5 main
Fate attenzione al fatto che il primo parametro è la versione nuova, mentre il secondo è la versione vecchia del database.

5. Cancellate il vecchio cluster e purgate la versione obsoleta di PostgreSQL

Se tutto ciò ha funzionato (e avete già fatto un backup del vostro database) potete ora semplicemente cancellare il vecchio cluster e disinstallare la versione non necessaria di PostgreSQL:

$ sudo pg_dropcluster --stop 9.5 main
$ sudo apt-get purge postgresql-9.5*
$ sudo apt-get autoremove

6. Conclusione

Potete assicurarvi che state usando l'ultima versione di PostgreSQL 9.6 con il seguente comando:

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory               Log file
9.6 main    5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
Se doveste avere dei problemi, assicuratevi che:
  1. Il servizio di PostgreSQL sia spento (/etc/init.d/postgresql stop)
  2. Abbiate ri-acceso il servizio (/etc/init.d/postgresql start)
  3. I permessi di PostgreSQL siano corretti
Questo è tutto!

Back