A) Per prima cosa crea un backup di tutti i database (puoi continuare da B se non hai bisogno di un backup)
- Accedi come utente postgres
sudo su postgres
- Crea un file .sql di backup per tutti i dati che hai in tutti i database
pg_dumpall > backup.sql
B) Esegui l'upgrade a PostgreSQL12
- aggiorna i pacchetti e installa Postgres 12
sudo apt-get update
sudo apt-get install postgresql-12 postgresql-server-dev-12
- Interrompi il servizio postgresql
sudo systemctl stop postgresql.service
- migra i dati
/usr/lib/postgresql/12/bin/pg_upgrade \
--old-datadir=/var/lib/postgresql/10/main \
--new-datadir=/var/lib/postgresql/12/main \
--old-bindir=/usr/lib/postgresql/10/bin \
--new-bindir=/usr/lib/postgresql/12/bin \
--old-options '-c config_file=/etc/postgresql/10/main/postgresql.conf' \
--new-options '-c config_file=/etc/postgresql/12/main/postgresql.conf'
- Passa a utente normale
exit
- Scambia le porte con la vecchia e la nuova versione di Postgres.
sudo vim /etc/postgresql/12/main/postgresql.conf
#change port to 5432
sudo vim /etc/postgresql/10/main/postgresql.conf
#change port to 5433
- Avvia il servizio postgresql
sudo systemctl start postgresql.service
- Accedi come utente postgres
sudo su postgres
- Controlla la tua nuova versione di Postgres
psql -c "SELECT version();"
- Esegui il nuovo script del cluster generato
./analyze_new_cluster.sh
- Torna come utente normale (utente predefinito) e ripulisci il pasticcio della vecchia versione
sudo apt-get remove postgresql-10 postgresql-server-dev-10
#uninstalls postgres packages
sudo rm -rf /etc/postgresql/10/
#removes the old postgresql directory
sudo su postgres
#login as postgres user
./delete_old_cluster.sh
#delete the old cluster data
- Complimenti! La tua versione postgresql è ora aggiornata, se tutto funziona bene in B, non dobbiamo applicare il backup poiché abbiamo già migrato i dati dalla versione precedente alla versione più recente, il backup è giusto nel caso qualcosa vada storto.
NOTA: Modifica postgresql.conf e pg_hba.conf secondo le tue esigenze
PS :Sentiti libero di commentare i tuoi problemi, suggerimenti o qualsiasi altra modifica che vorresti suggerire