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

У вас есть ещё какие-нибудь подробности? Я вижу то же самое

1 лайк

Для тех, кто столкнулся с той же проблемой, вот краткое резюме (составленное ИИ) моих действий:
Временно запустите PG15 → сделайте дамп базы данных → используйте PG18 → восстановите дамп

1 лайк

Итак, да, это обновление основано на образах.

То есть, даже если вы выберете установку старой версии Discourse, образ всё равно принудительно выполнит обновление до версии 18?

Понял.

1 лайк

Вижу, что ты это исправил, но метод, который дал ChatGPT, хотя и устранил ошибку, всё же очистил мою базу данных, так что по сути не осталось ни аккаунтов, ни тем, ни сообщений.

К счастью, это был относительно новый форум для разработчиков, поэтому потеря не слишком велика.

2 лайка

Мы проявили большую осторожность, чтобы этого не произошло сегодня. После каждого шага система сообщала мне, что ничего не будет удалено, и у меня сложилось впечатление, что мы трижды проверяли, все ли данные были перенесены, прежде чем согласились удалить больше не нужные нам файлы.

Но даже если бы что-то пошло не так, единственными данными, которые я бы потерял, были бы настройки компонентов темы.

1 лайк

Привет! У меня есть форум с довольно большой базой данных (около 80 ГБ). Для перехода с версии 13 на 15 я сменил сервер, выполнил новую установку и восстановил данные.

Вы также рекомендуете такой способ перехода? (Я пробовал выполнить обновление, но получил ошибки, связанные с кодовой страницей).

Ранее в этой теме сотрудники написали:

Итак, да, это вариант.

Вы уже сказали:

Ошибки сортировки? Какая версия текущего Discourse?

Возможно, стоит опубликовать ошибки, с которыми вы столкнулись, или вывод консоли.

но у вас не закончилось место (рекомендуется 2 x размер существующей базы данных)?

Привет, у меня достаточно места (250 ГБ свободно). Ошибка была «несовпадение сортировки», но, кажется, у меня нет строк utf в файле app.yml.

1 лайк

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

В определённой степени версии зависимостей отражают наши требования к хостингу — мы используем базовый образ внутри нашей инфраструктуры. Это означает, что он не должен слишком сильно устаревать, но также означает, что количество поддерживаемых нами комбинаций ограничено.

Это совершенно валидный метод, если он вам более привычен.

Если предупреждение возникает при подготовке к дампу старой БД, то беспокоиться не о чем. Мы запускаем сервер только против старой директории данных для того, чтобы выполнить pg_dump. Когда дамп восстанавливается на новом сервере, индексы пересоздаются.

Причина, по которой вы это видите, заключается в том, что в последние несколько дней мы выпустили новую версию базового образа, которая обновляется с Debian Bookworm до Trixie, меняя версию glibc. Локали, основанные на провайдере libc (который вы, вероятно, использовали), не являются стабильными при обновлениях glibc, поэтому, когда скрипт обновления запускает сервер Postgres для дампа ваших старых данных, он выводит предупреждения о несовпадении сортировки.

Несовпадение сортировки — это именно та причина, по которой мы выполняем дамп и восстановление вместо использования pg_upgrade. Как только ваша БД будет использовать C.UTF-8 с провайдером builtin, обновления glibc больше не будут влиять на сортировку.

2 лайка

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

2 лайка

Я попытался добавить в app.yml

app.yml
templates:

  • “templates/postgres.15.template.yml”
  • “templates/redis.template.yml”
  • “templates/web.template.yml”
  • “templates/web.ratelimited.template.yml”

чтобы отложить обновление, но получил следующую ошибку

Errno::ENOENT: No such file or directory @ rb_sysopen - /etc/postgresql/15/main/postgresql.conf
Location of failure: /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/replace_command.rb:11:in ‘IO.read’
replace failed with the params {“filename” => “/etc/postgresql/15/main/postgresql.conf”, “from” => “data_directory = ‘/var/lib/postgresql/15/main’”, “to” => “data_directory = ‘/shared/postgres_data’”}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Похоже, что у тебя неправильный базовый контейнер. Ты выполнил ./launcher rebuild? Это должно запустить git pull, но, возможно, стоит попробовать выполнить git pull вручную, чтобы проверить, изменится ли ситуация.

1 лайк