Infinite loop during postgres upgrade

Encontrei este problema durante a atualização mais recente do PostgreSQL de 13 para 15.

Em nossa implantação, nosso diretório /shared/postgres_data é montado em um dispositivo de armazenamento NVMe mais rápido, então movê-lo falhou com uma mensagem de erro Device or resource busy.

Corrigimos isso corrigindo o template do postgres da seguinte forma:

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:
           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

Em vez de tentar manipular o próprio diretório, apenas mova os conteúdos.

Por favor, considere integrar esta alteração para melhorar a confiabilidade das atualizações do banco de dados.

1 curtida