Pg_dump-Backup-Fehler für Remote-PgSQL – Port- und Versionsunterschiede; welche Optionen gibt es?

Wenn ich versuche, System-Backups auszuführen, erhalte ich folgende Meldung: „Das Backup ist fehlgeschlagen. Bitte überprüfen Sie die Protokolle."
Im Protokoll steht: pg_dump: [archiver (db)] connection to database "discoursedb" failed: could not connect to server: Connection refused

Ich vermute, dass hier zwei Probleme vorliegen:

  1. Der Remote-Server läuft auf einem nicht standardmäßigen Port.
  2. Der Remote-PostgreSQL-Server verwendet eine neuere PSQL-Version.

Wenn ich in die App eintrete (/var/discourse/launcher enter app) und ein manuelles Backup durchführe, stellte ich fest, dass ich zunächst ohne Portangabe exakt denselben Fehler erhielt:

$ pg_dump -h 123.456.789.101 -U username -W -F t discourse_db > discourse_db_backup.tar  
Password:  
pg_dump: [archiver (db)] connection to database "discourse_db" failed: could not connect to server: Connection refused  
\tIst der Server auf dem Host „123.456.789.101" aktiv und akzeptiert er  
\tTCP/IP-Verbindungen auf Port 5432?  

Das war leicht zu beheben (AUSSER ich weiß nicht, wie ich Discourse zwingen kann, den richtigen Port für Backups zu verwenden). Das nächste Problem war jedoch etwas besorgniserregender: Wir verwenden auf dem Datenbankserver eine neuere Version von PSQL:

$ pg_dump -h 123.456.789.101 -p 45678 -U username -W -F t discourse_db > discourse_db_backup.tar  
Password:  
pg_dump: server version: 11.5 (Ubuntu 11.5-3.pgdg18.04+1); pg_dump version: 10.10 (Debian 10.10-1.pgdg100+1)  
pg_dump: Abbruch wegen Inkonsistenz der Serverversion  

Was kann in einer solchen Situation unternommen werden? Gibt es eine Möglichkeit, funktionierende System-Backups in diesem Fall zu realisieren, oder müssen Discourse und die PostgreSQL-Datenbank separat gesichert werden?

Falls Letzteres die einzige Option ist, was ist der KORREKTE Weg, zumindest die Daten zu sichern? Gibt es eine bevorzugte, zusammenhängende Methode, um beides gleichzeitig durchzuführen, ohne ein neues Skript dafür schreiben zu müssen?

Ich habe in einem anderen Beitrag eine Diskussion über jemanden gefunden, der eine ähnlich gelagerte Situation hat. Der große Unterschied in meinem Fall ist, dass wir Dateien auf dem lokalen Server statt in S3 speichern. Ich könnte darauf verzichten, PostgreSQL zu sichern, da dies unabhängig erfolgt. Dennoch muss ich Folgendes sichern:

  • lokale Inhalte und
  • Discourse-Einstellungen

Ich würde nach wie vor eine konsolidierte Sicherung bevorzugen, bei der DB, Inhalte und Einstellungen an einem Ort zusammengefasst sind, aber ich vermute, dass Sie das nicht unterstützen (oder nicht unterstützen werden). Daher möchte ich zumindest Inhalte und Einstellungen in einem konsolidierten Paket zusammenfassen.

Postgres 11 wird nicht unterstützt. Du kannst an anderer Stelle nach Anleitungen suchen, wie man zwischen Versionen wiederherstellt, aber es wird etwas Arbeit erfordern, um Discourse mit pg11 zum Laufen zu bringen.

Interessant und seltsam. Irgendwo hatte ich gelesen, dass 11 in Ordnung sei, aber abgesehen davon habe ich bereits ein System auf 11 deployed und bisher keine Fehler oder Probleme gesehen (abgesehen vom Backup)… Jetzt machst du mir Sorgen…

Oh, da geht’s los: laut diesem Beitrag sollte PostgreSQL 11 einfach funktionieren.

Ja. Ich habe zwei Systeme auf pg11 bereitgestellt. Sie funktionieren einwandfrei, außer dass ich Backups direkt durchführe. Ich habe pg im Container auf Version 11 aktualisiert. Die Backups werden erstellt, aber nicht wiederhergestellt.

Das Discourse-Backup-System sollte bei einer PostgreSQL-Versionsinkonsistenz lediglich warnen und nicht fehlschlagen. Ich habe gerade selbst ein Backup erstellt, und da ich ebenfalls einen externen PG-Server verwende, wurde überhaupt keine Tarball-Datei erstellt.

Das gleiche Problem ist mir auch passiert. Ich habe die PostgreSQL-Datenbank auf einen separaten Server verschoben und bekam eine Backup-Fehlermeldung. Ich fand die Lösung, indem ich PostgreSQL auf dem Hauptserver in Docker gelöscht und neu installiert habe.

cd /var/discourse
./launcher enter app
apt-get remove postgresql-client-common
apt-get update
sudo apt-get install postgresql

Detail: Discourse yedekleme pg_dump hatası ve çözümü: pg_dump: error: server version: 12|13|14|15|*; pg_dump version: 12|13|14|15|* - Veritabanı Yönetim Sistemleri - Soru Cevap