Actualización de PostgreSQL 18 para autoalojamiento

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

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

  1. iniciar un respaldo desde la línea de comandos:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
  1. 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

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

  1. 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
  1. 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.
  2. eliminar la ruta del trabajador de Cloudflare a la página de mantenimiento (¡no queremos alcanzar el límite diario de 100 000!).
  3. eliminar los datos antiguos de pg18 para recuperar ese espacio en disco:
rm -fr /var/discourse/shared/data/postgres_data_old/

¡Hecho! :partying_face: :clinking_beer_mugs:

3 Me gusta