Actualice la versión del servidor PostgreSQL sin perder ningún dato
- Importancia de actualizar la versión del servidor PostgreSQL
- Diferentes enfoques para actualizar la versión del servidor PostgreSQL
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:
- Detenga cualquier instancia en ejecución del servidor PostgreSQL utilizando el comando
BASH
para su sistema operativo específico. - Instale la nueva versión del servidor PostgreSQL al que le gustaría cambiar e inícielo.
- Compruebe si puede conectarse a la nueva versión del servidor PostgreSQL que acaba de instalar.
- Cambie el número de puerto de la versión anterior del servidor PostgreSQL,
postgresql.conf
->puerto
de5432
a5433
. - Inicie la versión antigua del servidor PostgreSQL del nuevo número de puerto
5433
. - Abra la terminal y cambie el directorio usando el comando
cd
a la carpetabin
de la nueva versión. - Ejecute el comando
pg_dumpall -p 5433 -U <nombre de usuario> | psql -p 5432 -U <nombre de usuario>
en el terminal. - 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
opg_hba.conf
, estos cambios deberán replicarse manualmente en el Instalación del nuevo servidor PostgreSQL. El comandopg_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 comandoinitdb
: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 comandoutopic-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 comandosudo 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.
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