sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo actualizar la base de datos postgresql de 10 a 12 sin perder datos para openproject

A) Primero cree una copia de seguridad de todas las bases de datos para eso (puede continuar desde B si no necesita una copia de seguridad)

  1. Inicie sesión como usuario de postgres
     sudo su postgres
  1. Cree un archivo .sql de respaldo para todos los datos que tiene en todas las bases de datos
    pg_dumpall > backup.sql

B) Actualizar a PostgreSQL12

  1. actualizar paquetes e instalar postgres 12
     sudo apt-get update
     sudo apt-get install postgresql-12 postgresql-server-dev-12
  1. Detener el servicio postgresql
     sudo systemctl stop postgresql.service
  1. migrar los datos
     /usr/lib/postgresql/12/bin/pg_upgrade \
     --old-datadir=/var/lib/postgresql/10/main \
     --new-datadir=/var/lib/postgresql/12/main \
     --old-bindir=/usr/lib/postgresql/10/bin \
     --new-bindir=/usr/lib/postgresql/12/bin \
     --old-options '-c config_file=/etc/postgresql/10/main/postgresql.conf' \
     --new-options '-c config_file=/etc/postgresql/12/main/postgresql.conf'
  1. Cambiar a usuario normal
     exit
  1. Intercambie los puertos de las versiones de postgres antigua y nueva.
     sudo vim /etc/postgresql/12/main/postgresql.conf
     #change port to 5432
     sudo vim /etc/postgresql/10/main/postgresql.conf
     #change port to 5433
  1. Iniciar el servicio postgresql
     sudo systemctl start postgresql.service
  1. Inicie sesión como usuario de postgres
     sudo su postgres
  1. Verifique su nueva versión de postgres
     psql -c "SELECT version();"
  1. Ejecute el nuevo script de clúster generado
     ./analyze_new_cluster.sh
  1. Vuelva como usuario normal (usuario predeterminado) y limpie el desorden de la versión anterior
     sudo apt-get remove postgresql-10 postgresql-server-dev-10
     #uninstalls postgres packages
     sudo rm -rf /etc/postgresql/10/
     #removes the old postgresql directory
     sudo su postgres
     #login as postgres user
     ./delete_old_cluster.sh
     #delete the old cluster data
  1. ¡Felicidades! Su versión de postgresql ahora está actualizada. Si todo funciona bien en B, no tenemos que aplicar la copia de seguridad ya que hemos migrado los datos de la versión anterior a la versión más nueva, la copia de seguridad es solo en caso de que algo salga mal.

NOTA: Cambie postgresql.conf y pg_hba.conf según sus requisitos

PD :Siéntase libre de comentar sus problemas, sugerencias o cualquier otra modificación que le gustaría sugerir