У вас есть ещё какие-нибудь подробности? Я вижу то же самое
Для тех, кто столкнулся с той же проблемой, вот краткое резюме (составленное ИИ) моих действий:
Временно запустите PG15 → сделайте дамп базы данных → используйте PG18 → восстановите дамп
Итак, да, это обновление основано на образах.
То есть, даже если вы выберете установку старой версии Discourse, образ всё равно принудительно выполнит обновление до версии 18?
Понял.
Вижу, что ты это исправил, но метод, который дал ChatGPT, хотя и устранил ошибку, всё же очистил мою базу данных, так что по сути не осталось ни аккаунтов, ни тем, ни сообщений.
К счастью, это был относительно новый форум для разработчиков, поэтому потеря не слишком велика.
Мы проявили большую осторожность, чтобы этого не произошло сегодня. После каждого шага система сообщала мне, что ничего не будет удалено, и у меня сложилось впечатление, что мы трижды проверяли, все ли данные были перенесены, прежде чем согласились удалить больше не нужные нам файлы.
Но даже если бы что-то пошло не так, единственными данными, которые я бы потерял, были бы настройки компонентов темы.
Привет! У меня есть форум с довольно большой базой данных (около 80 ГБ). Для перехода с версии 13 на 15 я сменил сервер, выполнил новую установку и восстановил данные.
Вы также рекомендуете такой способ перехода? (Я пробовал выполнить обновление, но получил ошибки, связанные с кодовой страницей).
Ранее в этой теме сотрудники написали:
Итак, да, это вариант.
Вы уже сказали:
Я попробовал прямое обновление, но столкнулся с ошибками сортировки (collation)
Ошибки сортировки? Какая версия текущего Discourse?
Возможно, стоит опубликовать ошибки, с которыми вы столкнулись, или вывод консоли.
довольно большая база данных (около 80 ГБ)
но у вас не закончилось место (рекомендуется 2 x размер существующей базы данных)?
Привет, у меня достаточно места (250 ГБ свободно). Ошибка была «несовпадение сортировки», но, кажется, у меня нет строк utf в файле app.yml.
Так что, даже если вы решите установить старую версию Discourse, образ всё равно будет принудительно обновлять до версии 18?
Мы стараемся предоставлять разумные значения по умолчанию в образах discourse_docker, но невозможно учесть все возможные варианты использования. Не стесняйтесь настраивать свои образы, чтобы отложить обновление версий, если вам так удобнее.
В определённой степени версии зависимостей отражают наши требования к хостингу — мы используем базовый образ внутри нашей инфраструктуры. Это означает, что он не должен слишком сильно устаревать, но также означает, что количество поддерживаемых нами комбинаций ограничено.
Привет, у меня есть форум с довольно большой базой данных (около 80 ГБ). Для обновления с версии 13 до 15 я сменил сервер, выполнил чистую установку и восстановил данные.
Вы всё ещё рекомендуете этот подход? (Я пробовал прямое обновление, но столкнулся с ошибками сортировки)
Это совершенно валидный метод, если он вам более привычен.
Ошибка была «несовпадение сортировки».
Если предупреждение возникает при подготовке к дампу старой БД, то беспокоиться не о чем. Мы запускаем сервер только против старой директории данных для того, чтобы выполнить pg_dump. Когда дамп восстанавливается на новом сервере, индексы пересоздаются.
Причина, по которой вы это видите, заключается в том, что в последние несколько дней мы выпустили новую версию базового образа, которая обновляется с Debian Bookworm до Trixie, меняя версию glibc. Локали, основанные на провайдере libc (который вы, вероятно, использовали), не являются стабильными при обновлениях glibc, поэтому, когда скрипт обновления запускает сервер Postgres для дампа ваших старых данных, он выводит предупреждения о несовпадении сортировки.
Несовпадение сортировки — это именно та причина, по которой мы выполняем дамп и восстановление вместо использования pg_upgrade. Как только ваша БД будет использовать C.UTF-8 с провайдером builtin, обновления glibc больше не будут влиять на сортировку.
Если предупреждение появляется при подготовке к сбросу старой базы данных, то беспокоиться не о чем.
Я выполнил обновление сегодня вечером, и всё прошло по плану. Я получил те же предупреждения о сортировке базы данных, но, похоже, их можно игнорировать. Спасибо.
Я попытался добавить в 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 вручную, чтобы проверить, изменится ли ситуация.