Endlosschleife während des Postgres-Upgrades

Hi! Each time I launch /launcher rebuild app I get the following message (even if I launch it again) :

UPGRADE OF POSTGRES COMPLETE
Old 9.5 database is stored at /shared/postgres_data_old
To complete the upgrade, rebuild again using:
./launcher rebuild app

What information do you need to help me?

PS: The first time I ran it, the command stoped because I needed more space

Temporarily, I used the templates/postgres.9.5.template.yml template to avoid downtime. The app is running again, but I’d like to finish the update.

When I do a cleanup I get the following message : Old PostgreSQL backup data cluster detected taking up 1.2G detected. Would you like to remove it? (Y/n):

Sounds like a question for @tgxworld, but I am guessing that it failed due to lack of space but somehow didn’t catch that the upgrade had failed.

How much space do you have? And how big is your database?

1 „Gefällt mir“

Can you provide me with the full log generated during the rebuild? Thank you!

3 „Gefällt mir“

Ich habe das gleiche Problem seit vielen Monaten und kann meine Installation nicht aktualisieren.

Es läuft in einer Schleife und schlägt niemals fehl. Ein Problem während des rebuild app-Schritts ist folgendes:
mv: cannot move '/shared/postgres_data' to '/shared/postgres_data_old': Device or resource busy

Im Docker-Container habe ich folgende PostgreSQL-Version:

/usr/lib/postgresql/10/bin/postgres --version
postgres (PostgreSQL) 10.14 (Debian 10.14-1.pgdg100+1)

Das sind die Fehlermeldungen, die ich erhalte:

FAILED

--------------------

Pups::ExecError: /root/upgrade_postgres failed with return #<Process::Status: pid 47 exit 1>

Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec failed with the params "/root/upgrade_postgres"

0c74c9de4d4315b63c0ef9055631f38c0cf4b3dd0be6500fd83ca0a5b13e0d9d

** FAILED TO BOOTSTRAP ** bitte nach oben scrollen und nach früheren Fehlermeldungen suchen, es kann mehr als eine geben.

./discourse-doctor kann helfen, das Problem zu diagnostizieren.

Es scheint ein Problem im Skript /pups/lib/pups/exec_command.rb beim Ausführen von spawn zu geben.

Ich kann die App jedoch starten:
./launcher start app

Das sind die Dateien, die ich unter /shared habe:

total 48
drwxr-xr-x 12 root      root     4096 Jan 12 13:12 .
drwxr-xr-x 57 root      root     4096 Dec 15 09:09 ..
drwxr-xr-x  3 discourse www-data 4096 Aug 20  2019 backups
drwxr-xr-x  4 root      root     4096 Aug 19  2019 log
drwxr-xr-x  2 postgres  postgres 4096 Aug 19  2019 postgres_backup
drwx------ 20 postgres  postgres 4096 Jan 12 13:14 postgres_data
drwx------ 19 postgres  postgres 4096 Jan 12 13:12 postgres_data_new
drwxrwxr-x  5 postgres  postgres 4096 Jan 12 13:14 postgres_run
drwxr-xr-x  2 redis     redis    4096 Jan 12 13:07 redis_data
drwxr-xr-x  4 root      root     4096 Aug 19  2019 state
drwxr-xr-x  4 discourse www-data 4096 Jan 12 13:14 tmp
drwxr-xr-x  4 discourse www-data 4096 Sep  8  2019 uploads

Was kann ich tun?

Ist Ihr freigegebenes Verzeichnis eine Art Netzwerk-Mount?

1 „Gefällt mir“

Nein, aber ich habe es endlich geschafft!

Die beiden mv-Befehle in templates/postgres.template.yml werden nicht auf Korrektheit geprüft. Das Skript sagt immer UPGRADE OF POSTGRES COMPLETE, was nicht stimmt, wenn der Move fehlschlägt.

Ich habe die Befehle entfernt, die Verzeichnisse dann manuell verschoben, nachdem ich in den Docker-Container eingetreten war, und der nächste rebuild app-Aufruf funktioniert wieder wie zuvor! Ich bin so glücklich :smiley:
Vielen Dank.

3 „Gefällt mir“

Ich bin auf dieses Problem während des letzten Upgrades von PostgreSQL 13 auf 15 gestoßen.

In unserem Deployment ist unser Verzeichnis /shared/postgres_data auf einem schnelleren NVMe-Speichergerät gemountet, sodass das Verschieben mit der Fehlermeldung Device or resource busy fehlschlug.

Wir haben dies behoben, indem wir die PostgreSQL-Vorlage wie folgt angepasst haben:

diff --git a/templates/postgres.template.yml b/templates/postgres.template.yml
index c24bfe6..03813c4 100644
--- a/templates/postgres.template.yml
+++ b/templates/postgres.template.yml
@@ -139,8 +139,10 @@ run:
            exit 1
          fi

-         mv /shared/postgres_data /shared/postgres_data_old
-         mv /shared/postgres_data_new /shared/postgres_data
+         mkdir /shared/postgres_data_old
+         mv /shared/postgres_data/* /shared/postgres_data_old
+         mv /shared/postgres_data_new/* /shared/postgres_data
+         rmdir /shared/postgres_data_new

Anstatt zu versuchen, das Verzeichnis selbst zu manipulieren, verschieben wir einfach die Inhalte.

Bitte erwägen Sie die Integration dieser Änderung, um die Zuverlässigkeit von Datenbank-Upgrades zu verbessern.

1 „Gefällt mir“

Ich glaube, das könnte damit zusammenhängen: FIX: improve postgres upgrade reliability by jcharaoui · Pull Request #989 · discourse/discourse_docker · GitHub

2 „Gefällt mir“

Der PR wurde gemerged :+1:

1 „Gefällt mir“

Dieses Thema wurde nach 6 Tagen automatisch geschlossen. Neue Antworten sind nicht mehr gestattet.