Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Datenbank Cluster Verzeichnis in der falschen Version vorhanden

Dieses Thema im Forum "PostgreSQL" wurde erstellt von magpie, 18 Dezember 2019.

  1. magpie

    magpie Neuer Benutzer

    Ich hatte Postgres 11.5 installiert. Durch ein Systemupdate (Manjaro Linux) wurde automatisch die Version 12 eingespielt. Postgres ist danach nicht mehr gestartet, da das Cluster Verzeichnis nicht kompatibel ist. Ich habe dann wieder die Version 11.5 installiert, um das Upgrade sauber durchzuführen. Leider meldet mir das Systm nun, dass der Cluster nicht mit der aktuellen Version kompatibel ist. Es kommt die Meldung :
    2019-12-18 23:20:47.082 CET [2257] DETAIL: Der Datenbank-Cluster wurde mit PG_CONTROL_VERSION 1201 initialisiert, aber der Server wurde mit PG_CONTROL_VERSION 1100 kompiliert.

    In der Datei PG_VERSION steht: 11

    Kann ich die Situation irgendwie retten?

    Gruss
    Martin
     
  2. akretschmer

    akretschmer Datenbank-Guru

    was ist denn jetzt das data_directory? Steht da im Pfad eine Versionskennung drin? Suche mal nach allen Versionen von pg_ctl und pg_controldata.

    Und ja: Backup liegt bereit?
     
  3. magpie

    magpie Neuer Benutzer

    Das aktuelle data_directory ist /var/lib/postgres/data. Manjaro Linux legt keine Versionsverzeichnisse bei der Installation von Postgres an. Leider.

    Code:
    /usr/bin/pg_ctl
    /usr/share/locale/cs/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/de/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/es/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/fr/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/he/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/it/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/ja/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/ko/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/pl/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/pt_BR/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/ru/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/sv/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/tr/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/locale/zh_CN/LC_MESSAGES/pg_ctl-11.mo
    /usr/share/man/man1/pg_ctl.1.gz
    /bin/pg_ctl
    
    Code:
    /usr/bin/pg_controldata
    /usr/lib/postgresql/bitcode/postgres/utils/misc/pg_controldata.bc
    /usr/share/locale/cs/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/de/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/es/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/fr/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/it/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/ja/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/ko/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/pl/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/pt_BR/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/ru/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/sv/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/tr/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/vi/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/locale/zh_CN/LC_MESSAGES/pg_controldata-11.mo
    /usr/share/man/man1/pg_controldata.1.gz
    /bin/pg_controldata
    
    Ich habe ein Backup welches nicht ganz aktuell ist. Es ist keine produktive Datenbank. Ich bin dabei eine zu erstellen und es existiert eigentlich nur das Schema. Ich kann mit dem Backup weiterarbeiten, wenn ich die Situation aber retten kann wäre mir das lieber. Ich muss in Zukunft öfters ein Backup machen und bei Postgres die automatischen Backups deaktivieren :)
     
  4. magpie

    magpie Neuer Benutzer

    Ok ich habe herausgefunden wie Manjaro dies mit der Vorgängerversion löst und habe nun folgende Installation
    Code:
    /opt/pgsql-11/bin/pg_ctl
    /usr/bin/pg_ctl
    /usr/share/locale/cs/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/de/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/es/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/fr/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/he/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/it/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/ja/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/ko/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/pl/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/ru/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/sv/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/tr/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/uk/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/locale/zh_CN/LC_MESSAGES/pg_ctl-12.mo
    /usr/share/man/man1/pg_ctl.1.gz
    /bin/pg_ctl
    Code:
    /opt/pgsql-11/bin/pg_controldata
    /usr/bin/pg_controldata
    /usr/lib/postgresql/bitcode/postgres/utils/misc/pg_controldata.bc
    /usr/share/locale/cs/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/de/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/es/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/fr/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/it/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/ja/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/ko/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/pl/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/ru/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/sv/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/tr/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/uk/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/vi/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/locale/zh_CN/LC_MESSAGES/pg_controldata-12.mo
    /usr/share/man/man1/pg_controldata.1.gz
    /bin/pg_controldata
    Gemäss der Anleitung von Manjaro PostgreSQL - ArchWiki habe ich alles vorbereitet. Mit dem Befehl
    Code:
    [postgres]$ pg_upgrade -b /opt/pgsql-11/bin -B /usr/bin -d /var/lib/postgres/olddata -D /var/lib/postgres/data
    kommt aber folgende Fehlermeldung
    Code:
    [postgres@fenja tmp]$ pg_upgrade -b /opt/pgsql-11/bin -B /usr/bin -d /var/lib/postgres/olddata -D /var/lib/postgres/data
    Führe Konsistenzprüfungen durch
    -------------------------------
    Checking cluster versions                                   ok
    pg_resetwal: pg_control exists but is broken or wrong version; ignoring it
    
    *failure*
    Prüfen Sie die letzten Zeilen von »pg_upgrade_server.log« für den
    wahrscheinlichen Grund für das Scheitern.
    
    Verbindung zur Datenbank fehlgeschlagen: konnte nicht mit dem Server verbinden: Datei oder Verzeichnis nicht gefunden
        Läuft der Server lokal und akzeptiert er Verbindungen
        auf dem Unix-Domain-Socket »/var/lib/postgres/tmp/.s.PGSQL.50432«?
    
    konnte nicht mit dem Postmaster für den alten Cluster verbinden, gestartet mit dem Befehl:
    "/opt/pgsql-11/bin/pg_ctl" -w -l "pg_upgrade_server.log" -D "/var/lib/postgres/olddata" -o "-p 50432 -b  -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directories='/var/lib/postgres/tmp'" start
    Fehlgeschlagen, Programm wird beendet
    
    Irgendwie hat er das data_verzeichnis zerschossen
     
  5. akretschmer

    akretschmer Datenbank-Guru

    die gezeigten Dateien gehören eher NICHT zu PostgreSQL...

    Egal. Wenn es nicht produktiv ist ist es auch egal. Zum Thema "öfters ein Backup machen": man kann Backups kontinuierlich machen , um dann in der Lage zu sein, ein Point-In-Time-Recovery machen zu können. Schaue Dir einfach mal unser Barman (Barman) an, das macht exakt sowas. In "produktiven" Umgebungen sollte sowas Pflicht sein.

    Situation retten: vermutlich hast Du jetzt 2 Versionen installiert. Diese sollten in 2 unterschiedlichen Verzeichnissen sein (sowohl die Binaries als auch die Daten). Das ist jetzt an Dir, das zu prüfen.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden