# Éxito de bucle de actualización de Postgres debido a migración previa de Postgres 8 a 10

**URL:** https://meta.discourse.org/t/postgres-upgrade-success-loop-due-to-prior-postgres-8-to-10-migration/152827
**Category:** Self-hosting
**Created:** [26 Mayo, 2020 21:00 UTC](https://meta.discourse.org/t/postgres-upgrade-success-loop-due-to-prior-postgres-8-to-10-migration/152827 "2020-05-26T21:00:04Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![bspcht](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bspcht/32/181908_2.png) [@bspcht](https://meta.discourse.org/u/bspcht)
#### Post date: [26 Mayo, 2020 21:00 UTC](https://meta.discourse.org/t/postgres-upgrade-success-loop-due-to-prior-postgres-8-to-10-migration/152827/1 "2020-05-26T21:00:04Z")

</div>

En un bucle de:

`Para completar la actualización, vuelve a compilar usando: ./launcher rebuild app`

Debo estar perdiendo algo. El registro completo a continuación. Agradezco cualquier ayuda.

```
root@discuss:/var/discourse# ./launcher rebuild app
Asegurando que el lanzador esté actualizado
Obteniendo origen
El lanzador está actualizado
Deteniendo el contenedor antiguo
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Ya está actualizado.
I, [2020-05-26T20:43:00.459915 #1] INFO -- : Cargando --stdin
I, [2020-05-26T20:43:00.466076 #1] INFO -- : > locale-gen $LANG && update-locale
I, [2020-05-26T20:43:00.497010 #1] INFO -- : Generando configuraciones regionales (esto puede tardar un momento)...
Generación completada.

I, [2020-05-26T20:43:00.497661 #1] INFO -- : > mkdir -p /shared/postgres_run
I, [2020-05-26T20:43:00.500629 #1] INFO -- :
I, [2020-05-26T20:43:00.501124 #1] INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-05-26T20:43:00.503417 #1] INFO -- :
I, [2020-05-26T20:43:00.503867 #1] INFO -- : > chmod 775 /shared/postgres_run
I, [2020-05-26T20:43:00.505796 #1] INFO -- :
I, [2020-05-26T20:43:00.506199 #1] INFO -- : > rm -fr /var/run/postgresql
I, [2020-05-26T20:43:00.508341 #1] INFO -- :
I, [2020-05-26T20:43:00.508752 #1] INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-05-26T20:43:00.510785 #1] INFO -- :
I, [2020-05-26T20:43:00.511166 #1] INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres ya se está ejecutando, detén el contenedor ; exit 1
2020/05/26 20:43:00 socat[26] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No existe el archivo o directorio
I, [2020-05-26T20:43:00.515245 #1] INFO -- :
I, [2020-05-26T20:43:00.515542 #1] INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-05-26T20:43:00.518166 #1] INFO -- :
I, [2020-05-26T20:43:00.518509 #1] INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-05-26T20:43:00.520876 #1] INFO -- :
I, [2020-05-26T20:43:00.521215 #1] INFO -- : > mkdir -p /shared/postgres_run/12-main.pg_stat_tmp
I, [2020-05-26T20:43:00.523438 #1] INFO -- :
I, [2020-05-26T20:43:00.523931 #1] INFO -- : > chown postgres:postgres /shared/postgres_run/12-main.pg_stat_tmp
I, [2020-05-26T20:43:00.526034 #1] INFO -- :
I, [2020-05-26T20:43:00.530519 #1] INFO -- : Archivo > /etc/service/postgres/run chmod: +x chown:
I, [2020-05-26T20:43:00.534602 #1] INFO -- : Archivo > /etc/service/postgres/log/run chmod: +x chown:
I, [2020-05-26T20:43:00.538528 #1] INFO -- : Archivo > /etc/runit/3.d/99-postgres chmod: +x chown:
I, [2020-05-26T20:43:00.542481 #1] INFO -- : Archivo > /root/upgrade_postgres chmod: +x chown:
I, [2020-05-26T20:43:00.542896 #1] INFO -- : > chown -R root /var/lib/postgresql/12/main
I, [2020-05-26T20:43:00.638174 #1] INFO -- :
I, [2020-05-26T20:43:00.638520 #1] INFO -- : > [! -e /shared/postgres_data] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/12/bin/initdb -D /shared/postgres_data || exit 0
I, [2020-05-26T20:43:00.640938 #1] INFO -- :
I, [2020-05-26T20:43:00.641292 #1] INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2020-05-26T20:43:00.672801 #1] INFO -- :
I, [2020-05-26T20:43:00.673456 #1] INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2020-05-26T20:43:00.676098 #1] INFO -- :
I, [2020-05-26T20:43:00.676587 #1] INFO -- : > /root/upgrade_postgres
initdb: advertencia: habilitando la autenticación «trust» para conexiones locales
Puedes cambiar esto editando pg_hba.conf o usando la opción -A, o
--auth-local y --auth-host, la próxima vez que ejecutes initdb.
debconf: retrasando la configuración del paquete, ya que apt-utils no está instalado
mv: no se puede mover '/shared/postgres_data' a '/shared/postgres_data_old/postgres_data': El directorio no está vacío
mv: no se puede mover '/shared/postgres_data_new' a '/shared/postgres_data/postgres_data_new': El directorio no está vacío
I, [2020-05-26T20:43:15.530374 #1] INFO -- : Actualizando PostgreSQL de la versión 10 a la 12
Los archivos que pertenecen a este sistema de base de datos serán propiedad del usuario «postgres».
Este usuario también debe ser el propietario del proceso del servidor.

El clúster de bases de datos se inicializará con la configuración regional «en_US.UTF-8».
La codificación predeterminada de la base de datos se ha establecido en consecuencia como «UTF8».
La configuración predeterminada de búsqueda de texto se establecerá en «inglés».

Las sumas de verificación de las páginas de datos están desactivadas.

corrigiendo permisos en el directorio existente /shared/postgres_data_new ... ok
creando subdirectorios ... ok
seleccionando implementación de memoria compartida dinámica ... posix
seleccionando max_connections predeterminado ... 100
seleccionando shared_buffers predeterminado ... 128MB
seleccionando zona horaria predeterminada ... Etc/UTC
creando archivos de configuración ... ok
ejecutando script de arranque ... ok
realizando inicialización posterior al arranque ... ok
sincronizando datos en el disco ... ok

Éxito. Ahora puedes iniciar el servidor de bases de datos usando:

/usr/lib/postgresql/12/bin/pg_ctl -D /shared/postgres_data_new -l logfile start

Hit:1 http://deb.debian.org/debian buster InRelease
Get:2 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [49.3 kB]
Get:4 http://apt.postgresql.org/pub/repos/apt buster-pgdg InRelease [84.6 kB]
Get:5 http://security.debian.org/debian-security buster/updates/main amd64 Packages [201 kB]
Hit:6 https://deb.nodesource.com/node_10.x buster InRelease
Get:7 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 Packages [171 kB]
Se han obtenido 571 kB en 1s (810 kB/s)
Leyendo listas de paquetes...
Leyendo listas de paquetes...
Construyendo árbol de dependencias...
Leyendo información de estado...
Se instalarán los siguientes paquetes adicionales:
  postgresql-client-10
Paquetes sugeridos:
  postgresql-doc-10
Se instalarán los siguientes paquetes NUEVOS:
  postgresql-10 postgresql-client-10
0 actualizados, 2 nuevos para instalar, 0 para eliminar y 9 no actualizados.
Es necesario descargar 6.390 kB de archivos.
Después de esta operación, se utilizarán 30.6 MB adicionales de espacio en el disco.
Get:1 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-client-10 amd64 10.13-1.pgdg100+1 [1.428 kB]
Get:2 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-10 amd64 10.13-1.pgdg100+1 [4.961 kB]
Se han obtenido 6.390 kB en 2s (4.017 kB/s)
Seleccionando el paquete previamente no seleccionado postgresql-client-10.
(Leyendo la base de datos ... 43929 archivos y directorios actualmente instalados.)
Preparando para desempaquetar .../postgresql-client-10_10.13-1.pgdg100+1_amd64.deb ...
Desempaquetando postgresql-client-10 (10.13-1.pgdg100+1) ...
Seleccionando el paquete previamente no seleccionado postgresql-10.
Preparando para desempaquetar .../postgresql-10_10.13-1.pgdg100+1_amd64.deb ...
Desempaquetando postgresql-10 (10.13-1.pgdg100+1) ...
Configurando postgresql-client-10 (10.13-1.pgdg100+1) ...
update-alternatives: advertencia: forzando la reinstalación de la alternativa /usr/share/postgresql/12/man/man1/psql.1.gz porque el grupo de enlaces psql.1.gz está roto
Configurando postgresql-10 (10.13-1.pgdg100+1) ...
Creando nuevo clúster de PostgreSQL 10/main ...
/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --auth-local peer --auth-host md5
Los archivos que pertenecen a este sistema de base de datos serán propiedad del usuario «postgres».
Este usuario también debe ser el propietario del proceso del servidor.

El clúster de bases de datos se inicializará con la configuración regional «C.UTF-8».
La codificación predeterminada de la base de datos se ha establecido en consecuencia como «UTF8».
La configuración predeterminada de búsqueda de texto se establecerá en «inglés».

Las sumas de verificación de las páginas de datos están desactivadas.

corrigiendo permisos en el directorio existente /var/lib/postgresql/10/main ... ok
creando subdirectorios ... ok
seleccionando max_connections predeterminado ... 100
seleccionando shared_buffers predeterminado ... 128MB
seleccionando zona horaria predeterminada ... Etc/UTC
seleccionando implementación de memoria compartida dinámica ... posix
creando archivos de configuración ... ok
ejecutando script de arranque ... ok
realizando inicialización posterior al arranque ... ok
sincronizando datos en el disco ... ok

Éxito. Ahora puedes iniciar el servidor de bases de datos usando:

pg_ctlcluster 10 main start

Advertencia: El directorio stats_temp_directory seleccionado /var/run/postgresql/10-main.pg_stat_tmp
no es escribible para el propietario del clúster. No se agregará esta configuración en
postgresql.conf.
Ver Cluster Puerto Estado Propietario Directorio de datos Archivo de registro
10 main 5433 apagado postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: advertencia: forzando la reinstalación de la alternativa /usr/share/postgresql/12/man/man1/postmaster.1.gz porque el grupo de enlaces postmaster.1.gz está roto
invoke-rc.d: no se pudo determinar el nivel de ejecución actual
invoke-rc.d: policy-rc.d denegó la ejecución de start.
Procesando desencadenantes para postgresql-common (213.pgdg100+1) ...
Construyendo diccionarios de PostgreSQL a partir de los paquetes myspell/hunspell instalados...
Eliminando archivos de diccionario obsoletos:
Deteniendo el servidor de bases de datos PostgreSQL 10: main.
Deteniendo el servidor de bases de datos PostgreSQL 12: main.
Realizando comprobaciones de coherencia
-----------------------------
Comprobando versiones de clústeres ok
Comprobando que el usuario de la base de datos es el usuario de instalación ok
Comprobando configuración de conexión de la base de datos ok
Comprobando transacciones preparadas ok
Comprobando tipos de datos reg* en tablas de usuario ok
Comprobando contrib/isn con discrepancia en paso de bigint ok
Comprobando tablas WITH OIDS ok
Comprobando columnas de usuario «sql_identifier» inválidas ok
Creando volcado de objetos globales ok
Creando volcado de esquemas de bases de datos
  discourse
  postgres
  template1
                                                        ok
Comprobando presencia de bibliotecas requeridas ok
Comprobando que el usuario de la base de datos es el usuario de instalación ok
Comprobando transacciones preparadas ok

Si pg_upgrade falla después de este punto, debes reinicializar el
nuevo clúster antes de continuar.

Realizando actualización
------------------
Analizando todas las filas en el nuevo clúster ok
Congelando todas las filas en el nuevo clúster ok
Eliminando archivos de nuevo pg_xact ok
Copiando antiguo pg_xact al nuevo servidor ok
Estableciendo siguiente ID de transacción y época para el nuevo clúster ok
Eliminando archivos de nuevo pg_multixact/offsets ok
Copiando antiguo pg_multixact/offsets al nuevo servidor ok
Eliminando archivos de nuevo pg_multixact/members ok
Copiando antiguo pg_multixact/members al nuevo servidor ok
Estableciendo siguiente ID multixact y desplazamiento para el nuevo clúster ok
Restableciendo archivos WAL ok
Estableciendo contadores frozenxid y minmxid en el nuevo clúster ok
Restaurando objetos globales en el nuevo clúster ok
Restaurando esquemas de bases de datos en el nuevo clúster
  template1
  discourse
  postgres
                                                        ok
Copiando archivos de relación de usuario
  /shared/postgres_data/base/16400/2613
  /shared/postgres_data/base/16400/2683
  /shared/postgres_data/base/16400/16728
  /shared/postgres_data/base/16400/16728_fsm
  /shared/postgres_data/base/16400/16728_vm
  /shared/postgres_data/base/16400/16731
  /shared/postgres_data/base/16400/84163
  /shared/postgres_data/base/16400/84163_fsm
  /shared/postgres_data/base/16400/84163_vm
……
                                                        ok
Estableciendo siguiente OID para el nuevo clúster ok
Sincronizando directorio de datos en el disco ok
Creando script para analizar el nuevo clúster ok
Creando script para eliminar el antiguo clúster ok

Actualización completada
----------------
Las estadísticas del optimizador no se transfieren por pg_upgrade, por lo que,
una vez que inicies el nuevo servidor, considera ejecutar:
./analyze_new_cluster.sh

Ejecutar este script eliminará los archivos de datos del antiguo clúster:
./delete_old_cluster.sh
-------------------------------------------------------------------------------------
ACTUALIZACIÓN DE POSTGRES COMPLETADA

La antigua base de datos 10 se almacena en /shared/postgres_data_old

Para completar la actualización, vuelve a compilar usando:

./launcher rebuild app
-------------------------------------------------------------------------------------

```

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [26 Mayo, 2020 21:29 UTC](https://meta.discourse.org/t/postgres-upgrade-success-loop-due-to-prior-postgres-8-to-10-migration/152827/2 "2020-05-26T21:29:45Z")

</div>

Parece que quedan algunos archivos de hace 2 años desde la última actualización:

```plaintext
mv: no se puede mover '/shared/postgres_data' a '/shared/postgres_data_old/postgres_data': El directorio no está vacío
mv: no se puede mover '/shared/postgres_data_new' a '/shared/postgres_data/postgres_data_new': El directorio no está vacío

```

¿Puedes mover esos archivos a otro lugar antes de reconstruir?

---

<div class="post-metadata">

### Author: ![bspcht](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bspcht/32/181908_2.png) [@bspcht](https://meta.discourse.org/u/bspcht)
#### Post date: [26 Mayo, 2020 21:41 UTC](https://meta.discourse.org/t/postgres-upgrade-success-loop-due-to-prior-postgres-8-to-10-migration/152827/3 "2020-05-26T21:41:01Z")

</div>

¡Eso es todo! Gracias, @Falco.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [26 Mayo, 2020 21:47 UTC](https://meta.discourse.org/t/postgres-upgrade-success-loop-due-to-prior-postgres-8-to-10-migration/152827/4 "2020-05-26T21:47:34Z")

</div>

Gracias, he añadido esto a las [Preguntas Frecuentes](https://meta.discourse.org/t/postgresql-12-update/151236#every-rebuild-does-the-upgrade-again-aka-upgrade-loop). También añadiré la detección de este estado al script de actualización.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [25 Junio, 2020 21:58 UTC](https://meta.discourse.org/t/postgres-upgrade-success-loop-due-to-prior-postgres-8-to-10-migration/152827/5 "2020-06-25T21:58:53Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
