Обновление PostgreSQL 18 для self-hosters

Скрипт обновления проверит наличие свободного места и продолжит работу только в том случае, если это безопасно.

В процессе есть два этапа, на которых место на диске может стать критическим. Если вы проигнорируете проверку свободного места, именно здесь могут возникнуть проблемы:

  1. При выполнении pg_dump для извлечения данных из старой базы данных (на этом этапе требуется место, эквивалентное двойному объему БД).
  2. При выполнении pg_restore для загрузки данных в новую базу данных (на этом этапе требуется место, эквивалентное тройному объему БД).

Чтобы восстановить систему после такой ситуации, вам потребуется удалить файлы /shared/postgres_dump и /shared/postgres_data_new.

Обратите внимание: по завершении обновления мы удаляем временные файлы pg_dump, но оставляем ваши данные базы данных до обновления в директории /shared/postgres_data_old на всякий случай. Как только вы убедитесь, что всё работает корректно, вам, вероятно, захочется удалить эту директорию, чтобы освободить место на диске.

Я протестировал создание резервной копии Discourse на сайте с PG15 и восстановление её на сайте с PG18. У меня это сработало, но имейте в виду, что это не является официально поддерживаемым методом. Тщательно протестируйте это сначала на тестовом экземпляре, не являющемся производственным, и убедитесь, что у вас есть план отката!

Я рекомендую изучить процесс, используемый скриптом обновления. Если у вас есть особые требования к хранилищу, вы сможете адаптировать его под свои нужды. И снова: сначала протестируйте:

Да, это уже добавлено в discourse_docker. Если вы выполните pull ветки main или запустите ./launcher rebuild app, вы получите эти изменения.

Переключение discourse_docker с ветки main поможет предотвратить случайные обновления, если вы хотите отложить обновление.

3 лайка