En este tutorial vamos actualizar PostgreSQL 13 a PostgreSQL 14 en un entorno Windows, aunque con el paso del tiempo, este artículo también ha sido verificado para actualizar versiones posteriores como actualizar de PostgreSQL 15 a PostgreSQL 16. Por desgracia no existe un actualizador como tal, si no que deberemos instalar la nueva versión y migrar lo antiguo a la nueva versión.
Instalar nueva versión de PostgreSQL
- Accede a la web oficial y descarga PostgreSQL en su versión más reciente para Windows.
- Ejecuta el fichero descargado y realiza la instalación. Es muy sencilla, solo debes elegir la ubicación, la contraseña del usuario postgres (asigna la misma contraseña que al usuario postgres de la versión que ya tienes instalada) y el puerto (en mi caso lo he instalado en un puerto distinto)
Parada de servicios
- Abre los servicios de Windows, puedes hacerlo buscando la palabra servicios en el buscador o desde el panel de control > herramientas administrativas
- Localiza los dos servicios de PostgreSQL y seleccionando de uno en uno, haz clic en el botón parar.
Otorgar permisos
Para asegurarte de que todo va funcionar sin problemas debes comprobar que la carpeta raiz de tus instalaciones de PostgreSQL tienen los suficientes permisos. Si lo has instalado por defecto la ruta será c:\Program Files\PostgreSQL.
- Ubicate en carpeta anterior de tu instalación de PostgreSQL. En mi caso C:\Program Files
- Haz clic derecho sobre la carpeta PostgreSQL y después en propiedades.
- Haz clic en la pestaña Seguridad y asígnale al grupo Usuarios control total sobre la carpeta pulsando en el botón editar.
En realidad, si otorgáis permisos a la carpeta C:\Program Files\PostgreSQL\{nVersion}\data debería ser suficiente.
Copia de los datos
En el siguiente paso vamos a copiar los datos de la versión antigua de PostgreSQL a la nueva versión. Antes de realizar este paso se puede crear un backup, aunque en este tutorial no lo vamos a realizar. Si en tu caso lo consideras necesario puedes utilizar los comandos pg_dump y pg_dumpall para realizarlo. Vamos a realizar la copia de los datos entre versiones:
- Abre una linea de comandos con permisos de administrador.
- Accede a la carpeta bin de la nueva versión.
CD C:\Program Files\PostgreSQL\14\bin
- Indica la contraseña del usuario postgres de ambas versiones (debe ser la misma)
SET PGPASSWORD=tuContraseña
- Lanza la copia de los datos.
pg_upgrade -d "c:\Program Files\PostgreSQL\13\data" -D "c:\Program Files\PostgreSQL\14\data" -b "c:\Program Files\PostgreSQL\13\bin" -p 5433 -B "c:\Program Files\PostgreSQL\14\bin" -U postgres -P 5434
Lenguaje del código: JavaScript (javascript)
Ejemplo:
Parámetros de pg_upgrade
Como puedes observar en el paso anterior utilizamos una serie de parámetros del comando pg_upgrade que debes sustituir según tú instalación. Los parámetros utilizados y los disponibles aunque no los utilicemos son:
Parámetro | Descripción |
---|---|
-d | directorio de la carpeta data de la versión antigua |
-D | directorio de la carpeta data de la nueva versión |
-b | directorio de la carpeta bin de la versión antigua |
-B | directorio de la carpeta bin de la nueva versión |
-p | puerto donde esta instalado la versión anterior |
-P | puerto donde esta instalado la nueva versión |
-U | nombre de usuario de la instalación |
— | |
-c | solo chequea el cluster, no cambia ningún dato |
-j | número de procesos o subprocesos simultáneos a utilizar |
-k | usar enlaces en lugar de copiar archivos al nuevo clúster |
-o | opciones que se pasarán directamente al antiguo postgres; se añaden múltiples invocaciones de opciones |
-O | opciones que se pasarán directamente al nueva postgres; se añaden múltiples invocaciones de opciones |
-r | conservar SQL y registrar archivos incluso después de completarlos correctamente |
-v | habilitar el registro interno detallado |
-V | mostrar información de la versión y luego salir |
-? | mostrar la ayuda y luego salir |
Comprobación de la copia
Ahora si inicias los dos servicios que hemos parado anteriormente y abres pgAdmin podrás ver las bases de datos que teníamos en la versión antigua y en la nueva versión.
Se recomienda no eliminar inmediatamente después la versión anterior de PostgreSQL por seguridad hasta que se compruebe que todo es correcto, pero eso irá en función de tus necesidades. Recuerda que si has instalado la nueva versión de PostgreSQL en un puerto diferente deberás cambiar las conexiones de los programas que lo utilicen, como las conexiones ODBC. Si has instalado todo en el mismo puerto no es necesario realizar ningún cambio.
Borrar datos de la versión antigua de PostgreSQL
Ahora que estas seguro de que ha funcionado la copia y ya no necesitas los datos de la version antigua los puedes borrar siguiendo estos pasos:
- Abre la linea de comandos con permisos de administrador.
- Accede a la carpeta de la nueva version de PostgreSQL
CD C:\Program Files\PostgreSQL\14\bin
- Escribe el siguiente comando para borrar los datos de la versión antigua (esto borrara la carpeta data de la versión antigua ubicada en c:\Program Files\PostgreSQL\13\data)
delete_old_cluster.bat
Lenguaje del código: CSS (css)
Desinstalar versión antigua de PostgreSQL
Desinstalar la versión antigua de PostgreSQL es muy fácil, sigue estos pasos:
- Abre agregar o quitar programas.
- Busca y pulsa en desinstalar/modificar/cambiar sobre PostgreSQL.
- En el asistente marca la casilla Aplicación completa.
- Reinicia la maquina (opcional, pero recomendable) y ya tendrás actualizada tu versión de PostgreSQL