PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Aktualisieren Sie PostgreSQL von 9.6 auf 10.0 unter Ubuntu 16.10

Eine Schritt-für-Schritt-Anleitung

  1. Erstellen Sie eine Sicherung . Stellen Sie sicher, dass Ihre Datenbank nicht aktualisiert wird.

     pg_dumpall > outputfile
    
  2. Installieren Sie Postgres 10 . Folgen Sie den Anweisungen auf dieser Seite:https://www.postgresql.org/download/linux/ubuntu/

    Führen Sie dann sudo apt-get install postgresql-10 aus . Eine neuere Version wird parallel zur früheren Version installiert.

  3. Führen Sie pg_lsclusters aus :

     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
     10  main    5433 online postgres /var/lib/postgresql/10/main  /var/log/postgresql/postgresql-10-main.log
    

    Es gibt bereits einen Cluster main für 10 (da dies standardmäßig bei der Paketinstallation erstellt wird). Dies geschieht, damit eine Neuinstallation sofort funktioniert, ohne dass zuerst ein Cluster erstellt werden muss, aber natürlich kollidiert es, wenn Sie versuchen, 9.6/main zu aktualisieren wenn 10/main existiert auch. Das empfohlene Verfahren besteht darin, den 10-Cluster mit pg_dropcluster zu entfernen und aktualisieren Sie dann mit pg_upgradecluster .

  4. Stoppen Sie den 10er-Cluster und löschen Sie ihn:

     sudo pg_dropcluster 10 main --stop
    
  5. Stoppen Sie alle Prozesse und Dienste, die in die Datenbank schreiben. Stoppen Sie die Datenbank:

     sudo systemctl stop postgresql 
    
  6. Aktualisieren Sie den 9.6-Cluster:

     sudo pg_upgradecluster -m upgrade 9.6 main
    
  7. Starten Sie PostgreSQL erneut

     sudo systemctl start postgresql
    
  8. Führen Sie pg_lsclusters aus . Ihr 9.6-Cluster sollte jetzt "down" sein und der 10-Cluster sollte unter 5432 online sein :

     Ver Cluster Port Status Owner    Data directory               Log file
     9.6 main    5433 down   postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
     10  main    5432 online postgres /var/lib/postgresql/10/main  /var/log/postgresql/postgresql-10-main.log
    
  9. Überprüfen Sie zuerst, ob alles einwandfrei funktioniert. Entfernen Sie danach den 9.6-Cluster:

      sudo pg_dropcluster 9.6 main --stop
    

Einige Anmerkungen zu pg_upgradecluster

Diese Anleitung funktioniert gut für das Upgrade von 9.5 auf 10.1. Wenn Sie von einer älteren Version aktualisieren, ziehen Sie in Betracht, -m upgrade wegzulassen bei Schritt #6:

sudo pg_upgradecluster 9.6 main

Wenn Sie einen wirklich großen Cluster haben, können Sie pg_upgradecluster verwenden mit einem --link Option, damit das Upgrade vorhanden ist. Dies ist jedoch gefährlich – Sie können den Cluster bei einem Fehler verlieren. Verwenden Sie diese Option nur nicht, wenn es nicht erforderlich ist, da -m upgrade ist schon schnell genug.

Basierend auf:

  • Docs:Aktualisieren eines PostgreSQL-Clusters
  • Hauptsache 1:delameko/upgrade-postgres-9.5-to-9.6.md
  • Zeiger 2:johanndt/upgrade-postgres-9.3-to-9.5.md
  • Was passiert, wenn ich pg_upgradecluster unterbreche oder abbreche ?
  • Ubuntu-Manpage für pg_upgradecluster

Aktualisieren

Diese Anleitung funktioniert gut für Upgrades von 9.6 auf 11 und von 10 auf 11 sowie von 10 auf 13.