it-swarm.com.de

Aktualisieren Sie PostgreSQL von 9.6 auf 10.0 unter Ubuntu 16.10

Meine Datenbank ist über 600 GB groß und mein aktuelles Volumen beträgt nur 1 TB, was meine Optionen wahrscheinlich einschränkt.

Meine Konfigurationsdateien sind hier:

/etc/postgresql/9.6/main

Meine Datenbank ist hier:

/mnt/1TB/postgresql/9.6/main

Bearbeiten - Diese Anleitung hat bei mir funktioniert. Die einzige Ergänzung, die ich machen musste, war, libicu55 manuell herunterzuladen und zu installieren, und ich musste postgres 1777 die Berechtigung für mein/tmp/-Ordner erteilen. Ich habe den Datenordner auch auf einem anderen Laufwerk gespeichert, daher musste ich den folgenden Befehl verwenden:

pg_upgradecluster -m upgrade 10 main /mnt/1TB/postgresql/10

https://Gist.github.com/delameko/bd3aa2a54a15c50c723f0eef8f583a44

50
trench

Eine Schritt-für-Schritt-Anleitung

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

    pg_dumpall > outputfile
    
  2. Installieren Sie Postgres 10 . Befolgen Sie die 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 neben der 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 dieser bei der Paketinstallation standardmäßig erstellt wird). Dies geschieht so, dass eine Neuinstallation sofort funktioniert, ohne dass zuerst ein Cluster erstellt werden muss. Dies führt jedoch zu einem Konflikt, wenn Sie versuchen, 9.6/main Zu aktualisieren, wenn 10/main Ebenfalls vorhanden ist. Die empfohlene Vorgehensweise besteht darin, den 10-Cluster mit pg_dropcluster Zu entfernen und dann mit pg_upgradecluster Zu aktualisieren.

  4. Stoppen Sie den 10-Cluster und legen Sie ihn ab:

    Sudo pg_dropcluster 10 main --stop
    
  5. Beenden 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 zunächst, ob alles funktioniert. Entfernen Sie anschließend den 9.6-Cluster:

     Sudo pg_dropcluster 9.6 main --stop
    

Einige Hinweise zu pg_upgradecluster

Dieses Handbuch eignet sich gut für ein Upgrade von 9.5 auf 10.1. Wenn Sie ein Upgrade von einer älteren Version durchführen, sollten Sie in Schritt 6 -m upgrade Weglassen:

Sudo pg_upgradecluster 9.6 main

Wenn Sie einen sehr großen Cluster haben, können Sie pg_upgradecluster Mit der Option --link Verwenden, damit das Upgrade durchgeführt wird. Dies ist jedoch gefährlich - bei einem Ausfall können Sie den Cluster verlieren. Verwenden Sie diese Option nur dann nicht, wenn dies nicht erforderlich ist, da -m upgrade Bereits schnell genug ist.

Beyogen auf:

Aktualisieren

Dieses Handbuch eignet sich gut für Upgrades von 9.6 auf 11 und von 10 auf 11.

191
Max Malysh

Fast aus der Box gearbeitet. Ich bin am 17.10 kunstvoll. Während Sie können das in die .deb-Datei einfügen, funktioniert es nicht - Postgres aktualisiert die Nicht-LTS-Versionen nur, wenn sie die LTS-Version brechen. Setzen Sie also Zesty in diese Debatte ein und Sie können loslegen.

0
datakid