Aktualisieren Sie die PostgreSQL Server-Version ohne Datenverlust

Bilal Shahid 20 Juni 2023
  1. Wichtigkeit des Upgrades der PostgreSQL Server-Version
  2. Verschiedene Ansätze zum Aktualisieren der PostgreSQL-Serverversion
Aktualisieren Sie die PostgreSQL Server-Version ohne Datenverlust

Normalerweise aktualisieren viele Benutzer den PostgreSQL-Server nicht auf die neueste Version, da sie dabei Datenverlust befürchten. Das Aktualisieren des PostgreSQL-Servers auf eine neue Version ist etwas knifflig und kann zu einem vollständigen Datenverlust führen, wenn nicht die richtige Vorgehensweise befolgt wird.

Daher ist eine gründliche Recherche unerlässlich, bevor Sie den PostgreSQL-Server auf die neueste Version aktualisieren. Dieses Tutorial führt Sie Schritt für Schritt durch das Upgrade der PostgreSQL-Serverversion ohne Datenverlust.

Wichtigkeit des Upgrades der PostgreSQL Server-Version

Ja! Aus zahlreichen Gründen, die unten aufgeführt sind, ist es wichtig, den PostgreSQL-Server auf die neueste Version zu aktualisieren:

  • Die älteren Versionen bleiben möglicherweise nicht mehr mit anderen Anwendungen kompatibel.
  • Cyberkriminelle können aufgrund der ungepatchten Bedrohungen in den älteren Versionen Schwachstellen in Ihrem System finden und den PostgreSQL-Server angreifen.
  • Fehler in den älteren Versionen würden in der neueren Version gepatcht.
  • Die neue Version bietet verbesserte Funktionen, die helfen, die Aufgaben effizient auszuführen.

Dieser Artikel enthält die Methode zum erfolgreichen Aktualisieren des PostgreSQL-Servers von einer Version auf eine andere.

Die Anleitung gilt für alle Betriebssysteme.

Verschiedene Ansätze zum Aktualisieren der PostgreSQL-Serverversion

Es gibt mehrere Methoden, um den PostgreSQL-Server von einer Version auf eine andere zu aktualisieren, ohne Daten zu verlieren. Hier werden wir drei davon demonstrieren, um den PostgreSQL-Server zu aktualisieren.

Je nach Ihren Anforderungen können Sie eine der folgenden Lösungen auswählen.

Lösung 1: Die allgemeine Lösung

Es funktioniert für jedes Betriebssystem und kann den PostgreSQL-Server auf jede Version Ihrer Wahl aktualisieren, ohne die Daten zu manipulieren. Da dies eine allgemeine Lösung ist, werden die genauen BASH-Befehle nicht erwähnt.

Diese Befehle können für die verschiedenen Betriebssysteme gesucht und wie angegeben ausgeführt werden:

  1. Stoppen Sie alle laufenden Instanzen des PostgreSQL-Servers mit dem Befehl BASH für Ihr spezifisches Betriebssystem.
  2. Installieren Sie die neue Version des PostgreSQL-Servers, zu dem Sie wechseln möchten, und starten Sie ihn.
  3. Prüfen Sie, ob Sie sich mit der gerade installierten neuen Version des PostgreSQL-Servers verbinden können.
  4. Ändern Sie die Portnummer der alten Version des PostgreSQL-Servers postgresql.conf -> port von 5432 auf 5433.
  5. Starten Sie die alte Version des PostgreSQL-Servers mit der neuen Portnummer 5433.
  6. Öffnen Sie das Terminal und ändern Sie das Verzeichnis mit dem Befehl cd in den Ordner bin der neuen Version.
  7. Führen Sie den Befehl pg_dumpall -p 5433 -U <Benutzername> | aus psql -p 5432 -U <Benutzername> auf dem Terminal.
  8. Beenden Sie die laufende Instanz des alten PostgreSQL-Servers.

Die Implementierung des gesamten Verfahrens mit BASH-Befehlen, die für Ihr spezifisches Betriebssystem entwickelt wurden, hilft Ihnen, Ihren PostgreSQL-Server von einer alten Version auf eine neue Version zu aktualisieren.

Hinweis: Ein Problem, auf das Sie bei dieser Lösung stoßen können, ist, dass, wenn Sie einige der Postgres-Konfigurationsdateien geändert haben – zum Beispiel postgresql.conf oder pg_hba.conf – diese Änderungen manuell in der repliziert werden müssten neue Installation des PostgreSQL-Servers. Der Befehl pg_upgradecluster kann helfen, Konfigurationsdateien in den neuen Cluster zu kopieren.

Lösung 2: Annahme verwenden, die von Homebrew verwendet wird

Diese Lösung konzentriert sich auf die Annahme, dass Homebrew-Software verwendet wurde, um Postgres zu installieren und zu aktualisieren. Führen Sie die folgenden Schritte aus, um den PostgreSQL-Server von einer Version auf eine andere zu aktualisieren.

Der Einfachheit halber wird davon ausgegangen, dass Postgres v9.6 auf Postgres v10.1 aktualisiert wird.

  • Stoppen Sie die laufende Instanz des aktuellen PostgreSQL-Servers:
    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    
  • Installieren und initialisieren Sie eine neue 10.1-Datenbank mit dem Befehl initdb:
    initdb /usr/local/var/postgres10.1 -E utf8
    
  • Führen Sie den Befehl pg_upgrade aus. Dieser Befehl wird mit verschiedenen Erweiterungen verwendet, von denen einige unten erwähnt wurden:
    pg_upgrade -v \
    -d /usr/local/var/postgres \
    -D /usr/local/var/postgres10.1 \
    -b /usr/local/Cellar/postgresql/9.6/bin/ \
    -B /usr/local/Cellar/postgresql/10.1/bin/
    
    # The different extensions of the `pg_upgrade` command have the following significance:
    # The `-v` extension enables verbose internal logging.
    # The `-d` extension is used to specify the configuration directory of the old database.
    # The `-D` extension is used to specify the configuration directory of the new database.
    # The `-b` extension specifies the executable directory of the old database.
    # The `-B` extension specifies the executable directory of the new database.
    
  • Verschieben Sie die Daten aus der alten Datenbank mit den folgenden Befehlen an einen neuen Ort:
    cd /usr/local/var
    mv postgres postgres9.6
    mv postgres10.1 postgres
    
  • Nachdem Sie alle vier Schritte erfolgreich durchgeführt haben, starten Sie den PostgreSQL-Server neu. Zu diesem Zweck können wir den folgenden Befehl verwenden:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    

    Überprüfen Sie nach dem Neustart von Postgres /usr/local/var/postgres/server.log auf die Details des neuen Servers. Stellen Sie sicher, dass der neue Server ordnungsgemäß gestartet wurde und ordnungsgemäß ausgeführt wird.

  • Das Rails pg Gem sollte mit den folgenden Befehlen neu installiert werden:
    gem uninstall pg
    gem install pg
    

Überarbeitungen der zweiten Lösung

Homebrew ermöglicht es Benutzern jetzt, die Befehle brew services start postgresql und brew services stop postgresql anstelle der alten Befehle launchctl load und launchctl unload zu verwenden.

Die den Brühdiensten hinzugefügten Befehle sind unten als Referenz hervorgehoben:

brew services stop postgresql
brew upgrade postgresql
brew postgresql-upgrade-database
brew services start postgresql

Lösung 3: Für Ubuntu-Benutzer

Diese Lösung ist speziell für Ubuntu-Benutzer. Das allgemeine Verfahren ist das gleiche wie weiter oben in diesem Artikel beschrieben; Diese Lösung enthält jedoch Terminalbefehle, die in Ubuntu verwendet werden.

Die Schritte sind unten aufgeführt:

  • Stoppen Sie die alte Version von Postgres mit dem folgenden Befehl:
    sudo /etc/init.d/postgresql stop
    
  • Es muss eine neue Datei /etc/apt/sources.list.d/pgdg.list erstellt und durch Hinzufügen der folgenden Zeile bearbeitet werden:
    deb http://apt.postgresql.org/pub/repos/apt/ utopic-pgdg main
    

    Hinweis: Wir können den Befehl trusty-pgdb für Ubuntu 14.04 anstelle des Befehls utopic-pgdb verwenden.

  • Nachdem die Zeile zur neu erstellten Datei hinzugefügt wurde, führen Sie die unten aufgeführten Befehle aus:
    wget -q -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add-
    sudo apt-getupdate
    sudo apt-get install postgresql-10.1
    sudo pg_dropcluster --stop 10.1 main
    sudo /etc/init.d/postgresql start
    
  • Aktualisieren Sie den PostgreSQL-Server:
    sudo pg_upgradecluster 9.6 main
    sudo pg_dropcluster 9.6 main
    

    Der aktualisierte Cluster soll auf Port 5433 laufen. Überprüfen Sie daher den Port, um ein erfolgreiches Upgrade des PostgreSQL-Servers mit dem Befehl sudo pg_lsclusters sicherzustellen.

Es ist wichtig, einen korrekten Prozess für das Upgrade des PostgreSQL-Servers von einer Version auf eine andere zu befolgen; andernfalls kann ein fehlerhafter Aktualisierungsprozess zu Datenverlust führen. Daher sollte man vorsichtig bleiben.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Verwandter Artikel - PostgreSQL Update