Nach oben: Verwalten eines Guix System   [Inhalt][Index]


10.1 Postgres für Cuirass aktualisieren

Weil der Vorgabewert des Pakets mit postgres in postgresql-configuration jetzt als veraltet gilt (siehe b93434e656eba4260df82158a96c295000d3ff44), ist eine Systemaktualisierung nur nach einigen manuellen Schritten möglich. Hier geben wir einen Überblick.

Beachten Sie, wir beschreiben hier eine direkte Methode, die für kleine Datenmengen geeignet ist. Für große Datenbanken benutzen Sie eventuell besser pg_upgrade. Aber auch dann müssen Sie den Dienst und die Systemaktualisierung wie hier beschrieben handhaben.

  1. Stoppen Sie Cuirass und deaktivieren Sie es.

    Verhindern Sie somit, dass der Dienst neu startet und fehlschlägt, nachdem rekonfiguriert wird.

    sudo herd stop cuirass && sudo herd disable cuirass

  2. Exportieren Sie ein Dump Ihrer Datenbank.

    sudo su - postgres -s /bin/sh -c pg_dumpall > /tmp/pg.dump

  3. Fügen Sie den Postgres-Dienst hinzu oder ändern Sie ihn.

    Je nachdem, ob der Postgres-Dienst bei Ihnen implizit definiert ist (als Abhängigkeit über den Cuirass-Dienst) oder in einem eigenen Eintrag der (services)-Eigenschaft in Ihrem Betriebssystem deklariert ist, müssen Sie ihn entweder hinzufügen oder die bestehende Konfiguration ändern, damit sie Ihrer gewünschten Versionsänderung entspricht.

    Achten Sie darauf, nicht auf einen Schlag zu postgres-16 zu aktualisieren – aus ungeklärten Gründen mag der Cuirass-Dienst das nicht gerne. Nach einer kaputten Aktualisierung auf Postgres 16 musste ich die betroffenen Dateien löschen und neu initialisieren.

    (service postgresql-service-type
             (postgresql-configuration
              (postgresql (@ (gnu packages databases) postgresql-15))))
    

    Anmerkung: Wenn es Ihnen passiert ist, dass Sie den Text hier ignoriert haben und irgendwie blind den Beispielen gefolgt sind und doch auf 16 aktualisiert haben, ist hier beschrieben, wie Sie den Zustand zurücksetzen:

    1. Löschen Sie die Dateien der Datenbankinstanz.

      Nach Vorgabeeinstellung wohnen diese in /var/lib/postgres/data.

    2. Initialisieren Sie Postgres neu.

      sudo su - postgres -s /bin/sh -c 'pg_ctl init -D /var/lib/postgres/data'

  4. Rekonfigurieren Sie Ihr System.

    sudo guix system reconfigure path/to/your/altered/config.scm

  5. Stellen Sie den Datenbankinhalt wieder her.

    sudo su - postgres -s /bin/sh -c 'psql -d postgres -f /tmp/pg.dump'

  6. Aktivieren und starten Sie den Dienst.
    sudo herd enable cuirass
    sudo herd start cuirass
    

Nach oben: Verwalten eines Guix System   [Inhalt][Index]