Actualización fallida: PostgreSQL versión 13 ... no es compatible con ... versión 10.12

Tengo un pequeño foro, themooster.net, basado en Discourse, que no había actualizado en un par de meses.

Hice clic en “Actualizar” en la recomendación de “Administración” para realizar la actualización, y el sistema me indicó que debía ejecutarla desde la línea de comandos, proporcionándome tres líneas para ejecutar:

    cd /var/discourse
    git pull
    ./launcher rebuild app

Ejecuté esos tres comandos. La acción “rebuild app” falló inicialmente porque no tenía 5 GB libres en mi pequeño servidor Linode, así que agregué más espacio en disco y “rebuild app” pareció completarse correctamente.

Sin embargo, el sitio no volvió a estar en línea.

Revisé varias cosas, reinicié el servidor, pero sigue sin funcionar. Seguí investigando un poco más.

Parece que el frontend nginx se está iniciando correctamente, pero cuando intento acceder a mi foro desde la web, como un usuario normal, obtengo un error “502 Bad Gateway” desde el frontend de nginx.

El archivo “/var/discourse/shared/standalone/log/var-log/postgres/current” está lleno de errores como:

2021-04-17 13:54:37.785 UTC [7095] FATAL: los archivos de la base de datos son incompatibles con el servidor
2021-04-17 13:54:37.785 UTC [7095] DETAIL: El directorio de datos fue inicializado con PostgreSQL versión 13, que no es compatible con esta versión 10.12 (Debian 10.12-2.pgdg100+1).

Tengo buenas copias de seguridad del foro en mi directorio:
/var/discourse/shared/standalone/backups/default

¿Qué debería hacer ahora?

Consulta la actualización de PostgreSQL 13

Revisaré tu enlace de PostgreSQL 13 ahora, gracias.

¿Existe alguna forma en la que debería haber podido, o podría haber sabido, sobre esta complicación sin ser un administrador a tiempo completo que siga constantemente la actividad de las tecnologías clave (PostgreSQL, Ruby, Linux, …) detrás de Discourse?

De ser así, ¿podrían las tres líneas de instrucción (cd /var/discourse; …) incluir otra línea que diga: “Advertencia: consulta primero este enlace para obtener otra información que podría aplicarse”?

De no ser así, entonces Discourse debería ser más transparente al respecto, indicando que no está bien adaptado para un uso ocasional.

Intentaré leer la página de actualización de PostgreSQL 13 que amablemente enlazaste un par de veces más.

Pero, en las primeras lecturas… me siento medio totalmente perdido. No tengo ni idea de qué secciones de esa página podrían aplicar a mi situación (si es que hay alguna).

Por ejemplo, esa página de actualización de PostgreSQL 13 está (razonablemente, supongo) enfocada en la actualización de PostgreSQL 12 a 13. Mi mensaje de error:

El directorio de datos fue inicializado por la versión 13 de PostgreSQL, que no es compatible con esta versión 10.12 (Debian 10.12-2.pgdg100+1).

habla de la versión 10.12… ¿se refiere a PostgreSQL 10 o a PostgreSQL 12? (Normalmente leería “10.12” como siendo principalmente 10, no 12).

Aja - mi archivo:

/var/discourse/shared/standalone/postgres_data_old/PG_VERSION

tiene el valor “10”.

Por lo tanto, el enlace anterior a PostgreSQL 13, en la medida en que se aplique a una actualización de 12 a 13, no es necesariamente relevante, hasta donde sé (lo cual no es mucho).

Tengo una muy mala sensación al respecto… como intentar reparar municiones militares vivas, en una cueva oscura, sin instrucciones, sin formación y sin siquiera estar seguro de qué tipo de municiones estoy trabajando.

Este comentario, en el que me topé por casualidad, dice exactamente esto:

https://meta.discourse.org/t/how-do-i-manually-update-discourse-and-docker-image-to-latest/23325/238?u=thepythoniccow

“Deberías volver a compilar. Supongo que ignoraste un mensaje sobre la actualización de PostgreSQL.”

Esto me hizo pensar que debería intentar de nuevo lo de “cd /var/discourse; git pull; ./launcher rebuild app”… al parecer, ese “rebuild” se puede intentar varias veces.

Esta vez capturé la salida. Sin embargo, te lo garantizo: he ignorado la mayoría de los mensajes en la salida. Solo el comando “./launcher rebuild app” generó 2020 líneas de salida. Me tomaría un mes de domingos enteros aprender qué programas se están ejecutando y qué significan sus mensajes de salida. No hay forma práctica de que yo sepa si estoy ignorando algo crítico en esa salida.

Sin embargo…

¡Funcionó!

Mi sitio web volvió a estar en línea, ejecutando la versión actual del software.

Así que la lección del día: Si el comando “./launcher rebuild app” no logra que el sitio funcione, inténtalo de nuevo.

2 Me gusta

Ah. Lo siento, no pensé en decirte lo que le dije a ese tipo.

:tada: ¡Genial! Me alegra mucho que lo hayas logrado.

Sí. Eso podría ser lo único más que necesitas saber. :slight_smile:

¡Me alegra que hayas vuelto a estar en línea!

3 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.