Infinite loop during postgres upgrade

Ho riscontrato questo problema durante l’ultimo aggiornamento da PostgreSQL 13 a 15.

Nel nostro deployment, la nostra directory /shared/postgres_data è montata su un dispositivo di archiviazione NVMe più veloce, quindi il suo spostamento è fallito con un messaggio di errore Device or resource busy.

Abbiamo risolto questo problema modificando il template di postgres in questo modo:

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

Invece di tentare di manipolare la directory stessa, spostiamo semplicemente i contenuti.

Si prega di considerare l’integrazione di questa modifica per migliorare l’affidabilità degli aggiornamenti del database.

1 Mi Piace