PostgreSQL en Debian: Actualizar el cluster

PostgreSQL es uno de esos servidores que imponen. Frente a la asequibilidad friqui de MySQL, perdón, MariaDB, PostgreSQL tiene un aire de señor trajeado con cara de pocas bromas. Pero funciona muy bien, que es lo que importa; y el empaquetado en Debian es, como de costumbre, impecable.

Una de las cosas que distinguen a PostgreSQL es que se toma muy en serio eso de las versiones. Tanto que es posible tener varias corriendo a la vez en un servidor sin más que instalarlas con su nombre (postgresql-13, por ejemplo) y ponerle un puerto a cada una en su fichero/directorio de configuración (/etc/postgres/13/main/postgresql.conf, por seguir con el mismo ejemplo).

Actualizar entre versiones puede hacerse a mano, claro. Pero hay una herramienta que viene con el servidor que lo hace todo, y generalmente bien: pg_upgrade.

¿Y cómo se usa pg_upgrade? Como es habitual, la documentación es extensa y explicativa, pero no cuenta el caso de uso más habitual para actualizar en cinco minutos. Que se resuelve de esta manera que sigue a continuación:

1. Parar los servidores:

sudo systemctl stop postgresql

2. Ejecutar la migración con pg_upgrade:

sudo su - postgres 
postgres@servidorimportantequetecagas:~$ /usr/lib/postgresql/versionnueva/bin/pg_upgrade -b /usr/lib/postgresql/versionantigua/bin -B /usr/lib/postgresql/versionnueva/bin -d /var/lib/postgresql/versionantigua/main -D /var/lib/postgresql/versionnueva/main -o ' -c config_file=/etc/postgresql/versionantigua/main/postgresql.conf' -O ' -c config_file=/etc/postgresql/versionnueva/main/postgresql.conf'

Se puede añadir -c al final, para que no haga la migración sino que se limite a ver si todo parece preparado.

3. Cambiar el puerto

Editar la configuración de los servidores, típicamente en /etc/postgresql/versionantigua/main/postgresql.conf y /etc/postgresql/versionnueva/main/postgresql.conf, y poner el puerto deseado en el nuevo, para que las aplicaciones conecten al cluster nuevo.

4. Hacer limpieza:

alfredo@servidorimportantequetecagas:~$ sudo dpkg --purge postgresql-versionantigua postgresql-client-versionantigua

5. Arrancar los servidores:

sudo systemctl start postgresql

Listo. Este sencillo procedimiento, funciona con casi cualquier pareja de versiones de PostgreSQL desde allá por la 9, hasta la actual.

Ya no hace falta la copia de seguridad recién sacada. Porque hay una copia de seguridad recién sacada… ¿Verdad?

Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.