Actualice la versión del servidor PostgreSQL sin perder ningún dato

Bilal Shahid 20 junio 2023
  1. Importancia de actualizar la versión del servidor PostgreSQL
  2. Diferentes enfoques para actualizar la versión del servidor PostgreSQL
Actualice la versión del servidor PostgreSQL sin perder ningún dato

Por lo general, muchos usuarios no actualizan el servidor PostgreSQL a la última versión por temor a perder datos en el proceso. Actualizar el servidor PostgreSQL a una nueva versión es un poco complicado y puede resultar en una pérdida completa de datos si no se sigue el procedimiento correcto.

Por lo tanto, es esencial realizar una investigación exhaustiva antes de actualizar el servidor PostgreSQL a la versión más reciente. Este tutorial pasará por el proceso paso a paso de actualizar la versión del servidor PostgreSQL sin perder ningún dato.

Importancia de actualizar la versión del servidor PostgreSQL

¡Sí! Es esencial actualizar el servidor PostgreSQL a la versión más reciente debido a numerosas razones que se enumeran a continuación:

  • Es posible que las versiones anteriores ya no sean compatibles con otras aplicaciones.
  • Los ciberdelincuentes pueden encontrar vulnerabilidades en su sistema debido a las amenazas sin parches en las versiones anteriores y atacar el servidor PostgreSQL.
  • Los errores en las versiones anteriores se repararían en la versión más nueva.
  • La nueva versión ofrece características mejoradas que ayudan a realizar las tareas de manera eficiente.

Este artículo incluye el método para actualizar el servidor PostgreSQL de una versión a otra con éxito.

Las instrucciones se aplican a todos los sistemas operativos.

Diferentes enfoques para actualizar la versión del servidor PostgreSQL

Existen múltiples métodos para actualizar el servidor PostgreSQL de una versión a otra sin perder datos. Aquí, demostraremos tres de ellos para actualizar el servidor PostgreSQL.

Puede seleccionar cualquiera de las siguientes soluciones según sus requisitos.

Solución 1: La solución general

Funciona para cualquier sistema operativo y puede actualizar el servidor PostgreSQL a cualquier versión de su elección sin manipular los datos. Dado que esta es una solución general, no se mencionan los comandos BASH exactos.

Estos comandos pueden buscarse para los diferentes sistemas operativos e implementarse como se indica:

  1. Detenga cualquier instancia en ejecución del servidor PostgreSQL utilizando el comando BASH para su sistema operativo específico.
  2. Instale la nueva versión del servidor PostgreSQL al que le gustaría cambiar e inícielo.
  3. Compruebe si puede conectarse a la nueva versión del servidor PostgreSQL que acaba de instalar.
  4. Cambie el número de puerto de la versión anterior del servidor PostgreSQL, postgresql.conf -> puerto de 5432 a 5433.
  5. Inicie la versión antigua del servidor PostgreSQL del nuevo número de puerto 5433.
  6. Abra la terminal y cambie el directorio usando el comando cd a la carpeta bin de la nueva versión.
  7. Ejecute el comando pg_dumpall -p 5433 -U <nombre de usuario> | psql -p 5432 -U <nombre de usuario> en el terminal.
  8. Detenga la instancia en ejecución del antiguo servidor PostgreSQL.

La implementación de todo el procedimiento mediante comandos BASH diseñados para su sistema operativo específico lo ayudará a actualizar su servidor PostgreSQL de una versión anterior a una nueva.

Nota: un problema que puede encontrar con esta solución es que si ha cambiado algunos de los archivos de configuración de Postgres, por ejemplo, postgresql.conf o pg_hba.conf, estos cambios deberán replicarse manualmente en el Instalación del nuevo servidor PostgreSQL. El comando pg_upgradecluster puede ayudar a copiar archivos de configuración al nuevo clúster.

Solución 2: use la suposición utilizada por Homebrew

Esta solución se centra en la suposición de que el software Homebrew se ha utilizado para instalar y actualizar Postgres. Siga los pasos a continuación para actualizar el servidor PostgreSQL de una versión a otra.

Para simplificar, se supone que Postgres v9.6 se está actualizando a Postgres v10.1.

  • Detenga la instancia en ejecución del servidor PostgreSQL actual:
    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    
  • Instale e inicialice una nueva base de datos 10.1 usando el comando initdb:
    initdb /usr/local/var/postgres10.1 -E utf8
    
  • Ejecute el comando pg_upgrade. Este comando se usa con diferentes extensiones, algunas de las cuales se mencionan a continuación:
    pg_upgrade -v \
    -d /usr/local/var/postgres \
    -D /usr/local/var/postgres10.1 \
    -b /usr/local/Cellar/postgresql/9.6/bin/ \
    -B /usr/local/Cellar/postgresql/10.1/bin/
    
    # The different extensions of the `pg_upgrade` command have the following significance:
    # The `-v` extension enables verbose internal logging.
    # The `-d` extension is used to specify the configuration directory of the old database.
    # The `-D` extension is used to specify the configuration directory of the new database.
    # The `-b` extension specifies the executable directory of the old database.
    # The `-B` extension specifies the executable directory of the new database.
    
  • Mueva los datos de la base de datos anterior a un lugar nuevo usando los siguientes comandos:
    cd /usr/local/var
    mv postgres postgres9.6
    mv postgres10.1 postgres
    
  • Después de realizar con éxito los cuatro pasos, reinicie el servidor PostgreSQL. Podemos usar el siguiente comando para este propósito:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    

    Después de reiniciar Postgres, consulte /usr/local/var/postgres/server.log para obtener los detalles del nuevo servidor. Asegúrese de que el nuevo servidor se haya iniciado correctamente y funcione correctamente.

  • La gema pg de los rieles debe reinstalarse usando los siguientes comandos:
    gem uninstall pg
    gem install pg
    

Revisiones a la Segunda Solución

Homebrew ahora permite a los usuarios usar los comandos brew services start postgresql y brew services stop postgresql en lugar de los antiguos comandos launchctl load y launchctl unload.

Los comandos agregados a los servicios de preparación se destacan a continuación como referencia:

brew services stop postgresql
brew upgrade postgresql
brew postgresql-upgrade-database
brew services start postgresql

Solución 3: para usuarios de Ubuntu

Esta solución es específicamente para usuarios de Ubuntu. El procedimiento general es el mismo que se describe anteriormente en el artículo; sin embargo, esta solución contiene comandos de terminal que se usan en Ubuntu.

Los pasos se mencionan a continuación:

  • Detenga la versión anterior de Postgres con el siguiente comando:
    sudo /etc/init.d/postgresql stop
    
  • Se debe crear un nuevo archivo /etc/apt/sources.list.d/pgdg.list y editarlo con la adición de la siguiente línea:
    deb http://apt.postgresql.org/pub/repos/apt/ utopic-pgdg main
    

    Nota: Podemos usar el comando trusty-pgdb para Ubuntu 14.04 en lugar del comando utopic-pgdb.

  • Una vez que la línea se haya agregado al archivo recién creado, ejecute los comandos que se mencionan a continuación:
    wget -q -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add-
    sudo apt-getupdate
    sudo apt-get install postgresql-10.1
    sudo pg_dropcluster --stop 10.1 main
    sudo /etc/init.d/postgresql start
    
  • Actualice el servidor PostgreSQL:
    sudo pg_upgradecluster 9.6 main
    sudo pg_dropcluster 9.6 main
    

    Se supone que el clúster actualizado se ejecuta en el puerto 5433. Por lo tanto, verifique el puerto para garantizar una actualización exitosa del servidor PostgreSQL usando el comando sudo pg_lsclusters.

Es fundamental seguir un proceso correcto para actualizar el servidor PostgreSQL de una versión a otra; de lo contrario, un proceso de actualización incorrecto puede provocar la pérdida de datos. Por lo tanto, uno debe permanecer cuidadoso.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Artículo relacionado - PostgreSQL Update