Actualización de PostgreSQL 18 para autoalojamiento

Acabo de realizar 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 tan sencillas.

Para una configuración de doble contenedor detrás de Cloudflare CDN con cubos de subidas/copias de seguridad 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 nuevo espacio libre disponible
df -h -x tmpfs -x devtmpfs

Paso 2: Mantenimiento y copia de seguridad

  1. Editar una página de mantenimiento de Cloudflare para indicar un mantenimiento de sistema de actualización de 15-20 minutos (puede que no tome tanto tiempo, pero es mejor estar a salvo!) y establecer un temporizador de recarga de unos 30 segundos. Activar una ruta de worker de Cloudflare para mostrar la página de mantenimiento.

  1. Iniciar una copia de seguridad 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 copias de seguridad para confirmar que el archivo se subió correctamente

Paso 3: Apagado seguro

  1. Detener primero el contenedor web para cerrar 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 detenido 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 tablas de 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; la página de mantenimiento no debería estar cargando ahora si se configuró un temporizador de recarga.
  2. Eliminar la ruta del worker 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/

¡Listo! :partying_face: :clinking_beer_mugs:

7 Me gusta