Acabo de hacer la actualización a PostgreSQL 18 tanto para una instalación estándar como para una configuración de doble contenedor sin ningún problema. ¡Gracias de nuevo a @chrisr y al equipo por las instrucciones fáciles de seguir!
Para una configuración de doble contenedor detrás de Cloudflare CDN con cubos de subida/respaldo de R2, los pasos que utilicé fueron los siguientes:
Paso 1: limpieza de disco
# eliminar todos los datos de docker no utilizados
docker system prune -a -f
# limpiar registros antiguos y caché de apt
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# verificar el tamaño de la base de datos
du -sh /var/discourse/shared/data/postgres_data
# verificar el espacio libre disponible
df -h -x tmpfs -x devtmpfs
Paso 2: mantenimiento y respaldo
- editar una página de mantenimiento de Cloudflare para indicar una actualización de mantenimiento del sistema de 15 a 20 minutos y configurar un temporizador de recarga (es posible que no tarde tanto, pero es mejor estar seguros). Activar una ruta de trabajador de Cloudflare para mostrar la página de mantenimiento.
- iniciar un respaldo desde la línea de comandos:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
- iniciar sesión en el panel de Cloudflare R2 y verificar la carpeta de respaldos para confirmar que el archivo de respaldo se cargó correctamente.
Paso 3: apagado seguro
- detener primero el contenedor web para eliminar cualquier conexión activa y luego detener el contenedor de base de datos:
cd /var/discourse
./launcher stop web_only
./launcher stop data
- verificar que PostgreSQL se haya apagado correctamente:
tail -n 20 shared/data/log/var-log/postgres/current
Paso 4: reconstrucciones de actualización
Ejecutar los siguientes comandos en este orden:
./launcher rebuild data # volcar, migrar y restaurar postgresql 18
./launcher rebuild data # reconstruir el contenedor de base de datos
./launcher rebuild web_only # reconstruir la aplicación web
Paso 5: optimización y limpieza
- generar las estadísticas de tabla pg18 que faltan; de lo contrario, el foro será más lento de lo normal:
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
- probar el foro para asegurarse de que todo funcione correctamente; la página de mantenimiento ya no debería cargarse si tienes configurado un temporizador de recarga.
- eliminar la ruta del trabajador de Cloudflare a la página de mantenimiento (¡no queremos alcanzar el límite diario de 100 000!).
- eliminar los datos antiguos de pg18 para recuperar ese espacio en disco:
rm -fr /var/discourse/shared/data/postgres_data_old/
¡Hecho!
![]()
