Infinite loop during postgres upgrade

PostgreSQL 13から15への最新のアップグレード中にこの問題が発生しました。

私たちのデプロイメントでは、/shared/postgres_dataディレクトリはより高速なNVMeストレージデバイスにマウントされているため、Device or resource busyというエラーメッセージが表示されて移動に失敗しました。

以下のようにpostgresテンプレートをパッチすることでこれを修正しました。

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

ディレクトリ自体を操作しようとする代わりに、コンテンツを移動させます。

データベースアップグレードの信頼性を向上させるために、この変更を統合することを検討してください。

「いいね!」 1