Aggiornamento Postgres riuscito in loop a causa della precedente migrazione da Postgres 8 a 10

In un ciclo di:

Per completare l'aggiornamento, ricostruisci nuovamente utilizzando: ./launcher rebuild app

Devo aver dimenticato qualcosa. Log completo di seguito. Apprezzo qualsiasi aiuto.

root@discuss:/var/discourse# ./launcher rebuild app
Assicurazione che il launcher sia aggiornato
Recupero di origin
Il launcher è aggiornato
Arresto del vecchio contenitore
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Già aggiornato.
I, [2020-05-26T20:43:00.459915 #1]  INFO -- : Caricamento di --stdin
I, [2020-05-26T20:43:00.466076 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-05-26T20:43:00.497010 #1]  INFO -- : Generazione delle impostazioni locali (questo potrebbe richiedere del tempo)...
Generazione completata.

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 già in esecuzione, arresta il contenitore ; exit 1
2020/05/26 20:43:00 socat[26] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): File o directory non esistente
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 -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-05-26T20:43:00.534602 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-05-26T20:43:00.538528 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-05-26T20:43:00.542481 #1]  INFO -- : File > /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: avviso: abilitata l'autenticazione "trust" per le connessioni locali
Puoi modificare questo impostando pg_hba.conf o utilizzando l'opzione -A, o
--auth-local e --auth-host, la prossima volta che esegui initdb.
debconf: ritardo della configurazione del pacchetto, poiché apt-utils non è installato
mv: impossibile spostare '/shared/postgres_data' in '/shared/postgres_data_old/postgres_data': Directory non vuota
mv: impossibile spostare '/shared/postgres_data_new' in '/shared/postgres_data/postgres_data_new': Directory non vuota
I, [2020-05-26T20:43:15.530374 #1]  INFO -- : Aggiornamento di PostgreSQL dalla versione 10 alla 12
I file appartenenti a questo sistema di database saranno di proprietà dell'utente "postgres".
Questo utente deve anche possedere il processo del server.

Il cluster del database verrà inizializzato con le impostazioni locali "en_US.UTF-8".
La codifica predefinita del database è stata di conseguenza impostata su "UTF8".
La configurazione predefinita di ricerca testuale sarà impostata su "english".

I checksum delle pagine dei dati sono disabilitati.

Correzione dei permessi sulla directory esistente /shared/postgres_data_new ... ok
Creazione delle sottodirectory ... ok
Selezione dell'implementazione della memoria condivisa dinamica ... posix
Selezione del valore predefinito di max_connections ... 100
Selezione del valore predefinito di shared_buffers ... 128MB
Selezione del fuso orario predefinito ... Etc/UTC
Creazione dei file di configurazione ... ok
Esecuzione dello script di bootstrap ... ok
Esecuzione dell'inizializzazione post-bootstrap ... ok
Sincronizzazione dei dati su disco ... ok


Successo. Ora puoi avviare il server del database utilizzando:

/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]
Scaricati 571 kB in 1s (810 kB/s)
Lettura degli elenchi dei pacchetti...
Lettura degli elenchi dei pacchetti...
Costruzione dell'albero delle dipendenze...
Lettura delle informazioni sullo stato...
I seguenti pacchetti aggiuntivi saranno installati:
  postgresql-client-10
Pacchetti suggeriti:
  postgresql-doc-10
I seguenti NUOVI pacchetti saranno installati:
  postgresql-10 postgresql-client-10
0 aggiornati, 2 nuovi installati, 0 da rimuovere e 9 non aggiornati.
Necessari 6.390 kB di archivi.
Dopo questa operazione, saranno utilizzati 30.6 MB di spazio su disco aggiuntivo.
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]
Scaricati 6.390 kB in 2s (4.017 kB/s)
Selezione del pacchetto precedentemente non selezionato postgresql-client-10.
(Lettura del database ... 43929 file e directory attualmente installati.)
Preparazione per lo unpacking di .../postgresql-client-10_10.13-1.pgdg100+1_amd64.deb ...
Unpacking postgresql-client-10 (10.13-1.pgdg100+1) ...
Selezione del pacchetto precedentemente non selezionato postgresql-10.
Preparazione per lo unpacking di .../postgresql-10_10.13-1.pgdg100+1_amd64.deb ...
Unpacking postgresql-10 (10.13-1.pgdg100+1) ...
Impostazione di postgresql-client-10 (10.13-1.pgdg100+1) ...
update-alternatives: avviso: forzatura della reinstallazione dell'alternativa /usr/share/postgresql/12/man/man1/psql.1.gz perché il gruppo di collegamenti psql.1.gz è rotto
Impostazione di postgresql-10 (10.13-1.pgdg100+1) ...
Creazione del nuovo cluster PostgreSQL 10/main ...
/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --auth-local peer --auth-host md5
I file appartenenti a questo sistema di database saranno di proprietà dell'utente "postgres".
Questo utente deve anche possedere il processo del server.

Il cluster del database verrà inizializzato con le impostazioni locali "C.UTF-8".
La codifica predefinita del database è stata di conseguenza impostata su "UTF8".
La configurazione predefinita di ricerca testuale sarà impostata su "english".

I checksum delle pagine dei dati sono disabilitati.

Correzione dei permessi sulla directory esistente /var/lib/postgresql/10/main ... ok
Creazione delle sottodirectory ... ok
Selezione del valore predefinito di max_connections ... 100
Selezione del valore predefinito di shared_buffers ... 128MB
Selezione del fuso orario predefinito ... Etc/UTC
Selezione dell'implementazione della memoria condivisa dinamica ... posix
Creazione dei file di configurazione ... ok
Esecuzione dello script di bootstrap ... ok
Esecuzione dell'inizializzazione post-bootstrap ... ok
Sincronizzazione dei dati su disco ... ok

Successo. Ora puoi avviare il server del database utilizzando:

pg_ctlcluster 10 main start

Avviso: La directory stats_temp_directory selezionata /var/run/postgresql/10-main.pg_stat_tmp
non è scrivibile per il proprietario del cluster. Questa impostazione non verrà aggiunta in
postgresql.conf.
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5433 down   postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: avviso: forzatura della reinstallazione dell'alternativa /usr/share/postgresql/12/man/man1/postmaster.1.gz perché il gruppo di collegamenti postmaster.1.gz è rotto
invoke-rc.d: impossibile determinare il livello di esecuzione corrente
invoke-rc.d: policy-rc.d ha negato l'esecuzione dell'avvio.
Elaborazione dei trigger per postgresql-common (213.pgdg100+1) ...
Costruzione dei dizionari PostgreSQL dai pacchetti myspell/hunspell installati...
Rimozione dei file del dizionario obsoleti:
Arresto del server del database PostgreSQL 10: main.
Arresto del server del database PostgreSQL 12: main.
Esecuzione dei controlli di coerenza
-----------------------------
Controllo delle versioni dei cluster                                   ok
Controllo che l'utente del database sia l'utente di installazione                  ok
Controllo delle impostazioni di connessione del database                       ok
Controllo delle transazioni preparate                          ok
Controllo dei tipi di dati reg* nelle tabelle utente                 ok
Controllo di contrib/isn con mismatch nel passaggio di bigint       ok
Controllo delle tabelle WITH OIDS                               ok
Controllo delle colonne utente "sql_identifier" non valide          ok
Creazione del dump degli oggetti globali                             ok
Creazione del dump degli schemi del database
  discourse
  postgres
  template1
                                                        ok
Controllo della presenza delle librerie richieste                 ok
Controllo che l'utente del database sia l'utente di installazione                  ok
Controllo delle transazioni preparate                          ok

Se pg_upgrade fallisce dopo questo punto, dovrai reinizializzare il
nuovo cluster prima di continuare.

Esecuzione dell'aggiornamento
------------------
Analisi di tutte le righe nel nuovo cluster                       ok
Congelamento di tutte le righe nel nuovo cluster                        ok
Eliminazione dei file dal nuovo pg_xact                             ok
Copia del vecchio pg_xact nel nuovo server                           ok
Impostazione del prossimo ID di transazione ed epoca per il nuovo cluster       ok
Eliminazione dei file dal nuovo pg_multixact/offsets                ok
Copia del vecchio pg_multixact/offsets nel nuovo server              ok
Eliminazione dei file dal nuovo pg_multixact/members                ok
Copia del vecchio pg_multixact/members nel nuovo server              ok
Impostazione del prossimo ID multixact e offset per il nuovo cluster        ok
Reset degli archivi WAL                                      ok
Impostazione dei contatori frozenxid e minmxid nel nuovo cluster       ok
Ripristino degli oggetti globali nel nuovo cluster                 ok
Ripristino degli schemi del database nel nuovo cluster
  template1
  discourse
  postgres
                                                        ok
Copia dei file delle relazioni utente
  /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
Impostazione del prossimo OID per il nuovo cluster                            ok
Sincronizzazione della directory dei dati su disco                                 ok
Creazione dello script per analizzare il nuovo cluster                      ok
Creazione dello script per eliminare il vecchio cluster                       ok

Aggiornamento completato
----------------
Le statistiche dell'ottimizzatore non vengono trasferite da pg_upgrade, quindi,
una volta avviato il nuovo server, considera di eseguire:
./analyze_new_cluster.sh

L'esecuzione di questo script eliminerà i file dei dati del vecchio cluster:
./delete_old_cluster.sh
-------------------------------------------------------------------------------------
AGGIORNAMENTO DI POSTGRES COMPLETATO

Il vecchio database 10 è memorizzato in /shared/postgres_data_old

Per completare l'aggiornamento, ricostruisci nuovamente utilizzando:

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

Sembra che rimangano alcuni file risalenti a due anni fa, dall’ultimo aggiornamento:

mv: impossibile spostare '/shared/postgres_data' in '/shared/postgres_data_old/postgres_data': Directory non vuota
mv: impossibile spostare '/shared/postgres_data_new' in '/shared/postgres_data/postgres_data_new': Directory non vuota

Puoi spostare quei file altrove prima di ricostruire?

È tutto! Grazie, @Falco.

Grazie, ho aggiunto questo alla FAQ. Aggiungerò anche il rilevamento di questo stato nello script di aggiornamento.