Скрипт обновления проверит наличие свободного места и продолжит работу только в том случае, если это безопасно.
В процессе есть два этапа, на которых место на диске может стать критическим. Если вы проигнорируете проверку свободного места, именно здесь могут возникнуть проблемы:
- При выполнении
pg_dumpдля извлечения данных из старой базы данных (на этом этапе требуется место, эквивалентное двойному объему БД). - При выполнении
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 поможет предотвратить случайные обновления, если вы хотите отложить обновление.