Problemas al actualizar discourse después de un tiempo - FALLÓ LA ACTUALIZACIÓN DE POSTGRES

No he actualizado Discourse en bastante tiempo e intenté hacerlo hoy. En mi navegador, en admin/update, aparece el mensaje de que todo está actualizado, pero muestra la versión v2.4.0.beta2 +17 y entiendo que la última versión es 3.6.0.beta2.

Así que intenté actualizar a través de la terminal usando ./launcher rebuild app y la actualización falló, con el mensaje UPGRADE OF POSTGRES FAILED (FALLÓ LA ACTUALIZACIÓN DE POSTGRES). Leí la página de soporte y seguí todas las instrucciones allí y en publicaciones similares sobre problemas de actualización de POSTGRES, pero no he podido solucionar el problema.

Revisé los registros en /var/discourse/shared/standalone/log/var-log/postgres y encontré mensajes de error repetidos, como este:

2025-11-19 21:42:13.815 GMT [242] LOG: skipping missing configuration file “/shared/postgres_data/postgresql.auto.conf”
2025-11-19 21:42:13.816 UTC [242] FATAL: data directory “/shared/postgres_data” has wrong ownership
2025-11-19 21:42:13.816 UTC [242] HINT: The server must be started by the user that owns the data directory.

Algo que no entiendo es que no existe el directorio /shared/postgres_data, sino /shared/standalone/postgres_data.

El mensaje de error de la terminal se incluye a continuación. Agradecería cualquier indicación para que la actualización funcione.

Gracias,

Nick


Success. You can now start the database server using:



    /usr/lib/postgresql/13/bin/pg_ctl -D /shared/postgres_data_new -l logfile start



Ign:1 
 buster-pgdg InRelease

Ign:2 
 buster/updates InRelease

Err:3 
 buster-pgdg Release

  404  Not Found [IP: 151.101.67.52 80]

Err:4 
 buster/updates Release

  404  Not Found [IP: 151.101.2.132 80]

Ign:5 
 buster InRelease

Ign:6 
 buster-updates InRelease

Err:7 
 buster Release

  404  Not Found [IP: 151.101.2.132 80]

Err:8 
 buster-updates Release

  404  Not Found [IP: 151.101.2.132 80]

Get:9 https://deb.nodesource.com/node_15.x buster InRelease [4,584 B]

Reading package lists...

Reading package lists...

Building dependency tree...

Reading state information...

The following additional packages will be installed:

  postgresql-client-10

Suggested packages:

  postgresql-doc-10

The following NEW packages will be installed:

  postgresql-10 postgresql-client-10

0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.

Need to get 6,441 kB of archives.

After this operation, 30.6 MB of additional disk space will be used.

Err:1 
 buster-pgdg/main amd64 postgresql-client-10 amd64 10.17-1.pgdg100+1

  404  Not Found [IP: 151.101.195.52 80]

Err:2 
 buster-pgdg/main amd64 postgresql-10 amd64 10.17-1.pgdg100+1

  404  Not Found [IP: 151.101.195.52 80]

Stopping PostgreSQL 13 database server: main.



check for "/usr/lib/postgresql/10/bin" failed: No such file or directory



Failure, exiting

-------------------------------------------------------------------------------------

UPGRADE OF POSTGRES FAILED

Please visit 
 for support.



You can run ./launcher start app to restart your app in the meanwhile



FAILED

--------------------

Pups::ExecError: /root/upgrade_postgres failed with return #<Process::Status: pid 50 exit 1>

Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec failed with the params "/root/upgrade_postgres"

9f400ba2cca88f79359496e95027cf26c2d5a3672837c5594793cf723585407b

** 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.

Necesitas reconstruir en la línea de comandos, dos veces. Consulta Actualización de PostgreSQL 15

Mmm. Es posible que tengas una vinculación no estándar en tu app.yml. Tu sistema operativo casi con toda seguridad también está desactualizado. Recomiendo migrar a una nueva VM y restaurar la base de datos allí. Consulta Mover un sitio de Discourse a otro VPS con rsync.

No copies la base de datos. Es más fácil restaurar una copia de seguridad.

Gracias por tu respuesta, Jay. De acuerdo, he creado una nueva VM y he seguido los pasos del artículo en Preparar nuevo VPS. Ahora no estoy seguro de qué hacer: ¿debo continuar con los pasos en Copiar archivos al nuevo VPS? Me pregunto si estoy haciendo una instalación limpia de Discourse y luego restaurando la base de datos de la instalación antigua, o copiando los archivos de Discourse desde la VM antigua. Estoy pensando que si solo copio los archivos de Discourse de la VM antigua, los problemas podrían replicarse en la nueva VM, pero probablemente estoy entendiendo algo mal.

Dado que es tan antiguo, recomendaría simplemente hacer una instalación limpia y copiar solo la copia de seguridad al nuevo servidor.

  • hacer copia de seguridad del sitio antiguo
  • rsync -rav oldsite:/var/discourse/shared/backups /var/discourse/shared/
  • cambiar DNS al nuevo servidor
  • ./discourse-setup (obtenga sus valores SMTP del antiguo app.yml) en el nuevo servidor
  • ./launcher enter app
  • discourse backup (esto creará el directorio de copia de seguridad predeterminado con los permisos correctos)
  • discourse enable_restore
  • discourse restore (esto mostrará las copias de seguridad disponibles)
  • copiar y pegar el comando de restauración
  • Una versión más complicada sería usar rsync para todo excepto la base de datos de esta manera:
rsync -rav --numeric-ids OLD-IP:/var/discourse/shared/ /var/discourse/shared/ --exclude log --exclude postgres_* --exclude redis_data --exclude letsencrypt --exclude ssl --exclude log --exclude tmp --exclude state

Gracias de nuevo, Jay. He logrado hacer una instalación limpia de Discourse y restaurar la copia de seguridad desde la VM antigua usando tus instrucciones y todo parece funcionar bien. ¡Debo recordar actualizar más a menudo!

2 Me gusta

¡Genial! ¡Eso es fantástico! ¡Me alegra que haya funcionado!

Si mi publicación fue la solución, por favor haz clic en el :check_mark: para que el tema se cierre.