A) Erstellen Sie dafür zuerst ein Backup aller Datenbanken (Sie können mit B fortfahren, wenn Sie kein Backup benötigen)
- Melden Sie sich als Postgres-Benutzer an
sudo su postgres
- Erstellen Sie eine .sql-Sicherungsdatei für alle Daten, die Sie in allen Datenbanken haben
pg_dumpall > backup.sql
B) Aktualisieren Sie auf PostgreSQL12
- Pakete aktualisieren und Postgres 12 installieren
sudo apt-get update
sudo apt-get install postgresql-12 postgresql-server-dev-12
- Beenden Sie den postgresql-Dienst
sudo systemctl stop postgresql.service
- Daten migrieren
/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'
- Zum normalen Benutzer wechseln
exit
- Vertauschen Sie die Ports der alten und neuen Postgres-Versionen.
sudo vim /etc/postgresql/12/main/postgresql.conf
#change port to 5432
sudo vim /etc/postgresql/10/main/postgresql.conf
#change port to 5433
- Starten Sie den postgresql-Dienst
sudo systemctl start postgresql.service
- Melden Sie sich als Postgres-Benutzer an
sudo su postgres
- Überprüfen Sie Ihre neue Postgres-Version
psql -c "SELECT version();"
- Führen Sie das generierte neue Cluster-Skript aus
./analyze_new_cluster.sh
- Kehren Sie als normaler Benutzer (Standardbenutzer) zurück und bereinigen Sie das Chaos der alten Version
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
- Herzlichen Glückwunsch! Ihre postgresql-Version ist jetzt aktualisiert. Wenn in B alles gut funktioniert, müssen wir das Backup nicht anwenden, da wir die Daten bereits von der älteren Version auf die neuere Version migriert haben. Das Backup ist nur für den Fall, dass etwas schief geht.
HINWEIS: Ändern Sie postgresql.conf und pg_hba.conf gemäß Ihren Anforderungen
PS :Fühlen Sie sich frei, Ihre Probleme, Vorschläge oder andere Änderungen, die Sie vorschlagen möchten, zu kommentieren