Revisamos exhaustivamente cada secciones de nuestra página web con el objetivo de enseñarte en todo momento información certera y certera.
Solución:
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)
- Iniciar sesión como usuario de postgres
sudo su postgres
- 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
- actualizar paquetes e instalar postgres 12
sudo apt-get update
sudo apt-get install postgresql-12 postgresql-server-dev-12
- Detener el servicio postgresql
sudo systemctl stop postgresql.service
- 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'
- Cambiar a usuario normal
exit
- Intercambie los puertos de las versiones antiguas y nuevas de postgres.
sudo vim /etc/postgresql/12/main/postgresql.conf
#change port to 5432
sudo vim /etc/postgresql/10/main/postgresql.conf
#change port to 5433
- Inicie el servicio postgresql
sudo systemctl start postgresql.service
- Iniciar sesión como usuario de postgres
sudo su postgres
- Verifique su nueva versión de postgres
psql -c "SELECT version();"
- Ejecute el nuevo script de clúster generado
./analyze_new_cluster.sh
- Regrese como un 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
- ¡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
- Copia de seguridad de la base de datos
psql --version sudo -u postgres psql pg_dumpall > alldbs.sql
(este comando hará una copia de seguridad de todas las bases de datos de la base de datos postgresql)
Luego salga del usuario de postgres y:
-
Dentro de una terminal ejecuta estos comandos:
sudo systemctl stop postgres sudo apt-get install -y postgresql-12 postgresql-server-dev-12 postgresql-contrib-12 libpq-dev postgresql-12-hypopg sudo pg_dropcluster 12 main --stop sudo pg_upgradecluster 10 main sudo pg_dropcluster 10 main --stop
-
reinicie el servicio postgresql:
sudo systemctl restart postgresql
-
iniciar sesión en el postgres:
su - postgres
-
para comprobar la versión:
psql --version
Lo hice siguiendo los pasos anteriores y pude actualizar la base de datos y restaurar todos los datos.
Finalizando este artículo puedes encontrar las reseñas de otros programadores, tú también eres capaz insertar el tuyo si te apetece.