Come aggiornare PostgreSQL da versione 9.5 a 9.6 su Ubuntu 16.04
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:- Il servizio di PostgreSQL sia spento (/etc/init.d/postgresql stop)
- Abbiate ri-acceso il servizio (/etc/init.d/postgresql start)
- I permessi di PostgreSQL siano corretti