Infinite loop during postgres upgrade

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“