Aggiornamento fallito da 2.7.0.beta1 a 2.7.0.beta3

Ho utilizzato l’aggiornamento del browser con un clic per tentare l’aggiornamento dalla versione 2.7.0.beta1 alla 2.7.0.beta3.

Per prima cosa ha aggiornato Docker, apparentemente con successo. Poi, come indicato, ho eseguito sul server i seguenti comandi:

    cd /var/discourse
    git pull
    ./launcher rebuild app

L’operazione si è conclusa indicando che era necessario eseguire nuovamente il rebuild. Quindi l’ho fatto, e il processo è arrivato abbastanza avanti prima di mostrare quanto segue:

I, [2021-02-01T04:03:23.848858 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2021-02-01T04:03:23.850125 #1]  INFO -- : > sleep 5
I, [2021-02-01T04:03:28.854186 #1]  INFO -- :
I, [2021-02-01T04:03:28.854378 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
createdb: errore: impossibile connettersi al database template1: impossibile connettersi al server: Nessun file o directory
        Il server è in esecuzione localmente e accetta
        connessioni sul socket di dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-02-01T04:03:28.940422 #1]  INFO -- :
I, [2021-02-01T04:03:28.940926 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
psql: errore: impossibile connettersi al server: Nessun file o directory
        Il server è in esecuzione localmente e accetta
        connessioni sul socket di dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-02-01T04:03:29.005802 #1]  INFO -- :
I, [2021-02-01T04:03:29.006192 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
psql: errore: impossibile connettersi al server: Nessun file o directory
        Il server è in esecuzione localmente e accetta
        connessioni sul socket di dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-02-01T04:03:29.055155 #1]  INFO -- :
I, [2021-02-01T04:03:29.055530 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
psql: errore: impossibile connettersi al server: Nessun file o directory
        Il server è in esecuzione localmente e accetta
        connessioni sul socket di dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-02-01T04:03:29.102737 #1]  INFO -- :
I, [2021-02-01T04:03:29.103136 #1]  INFO -- : Terminazione dei processi asincroni
I, [2021-02-01T04:03:29.103280 #1]  INFO -- : Invio di INT a HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 52


FALLITO
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' fallito con stato di ritorno #<Process::Status: pid 78 exit 2>
Posizione dell'errore: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec fallito con i parametri "su postgres -c 'psql $db_name -c \"alter schema public owner to $db_user;\"'"
74718f22e5eb9e1ceb21ac2a2fe613d13aee282a353cf60b91258ba2b2323397
** BOOTSTRAP FALLITO ** Si prega di scorrere verso l'alto e cercare eventuali messaggi di errore precedenti; potrebbero essercene più di uno.
./discourse-doctor potrebbe aiutare a diagnosticare il problema.

Le note di rilascio mettevano in guardia riguardo a PostgreSQL e allo spazio su disco; forse l’errore è dovuto a questo? Quando eseguo discourse-doctor, l’output include:

---------- Spazio su disco del sistema operativo ----------
Filesystem                 Size  Used Avail Use% Mounted on
/dev/disk/by-label/DOROOT   30G   20G  8.5G  70% /

Cosa devo fare ora?

Puoi incollare più righe dell’output di ricostruzione? Ne abbiamo bisogno di alcune precedenti a quelle per poter risolvere il problema.

Sembra che il colpevole possa essere:

    I, [2021-02-01T22:13:56.638190 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
2021-02-01 22:14:05.011 UTC [4123] discourse@discourse ERROR:  duplicate key value violates unique constraint "index_users_on_username"
2021-02-01 22:14:05.011 UTC [4123] discourse@discourse DETAIL:  Key (username)=(Pxxx_Gxxxxxxxx) already exists.
2021-02-01 22:14:05.011 UTC [4123] discourse@discourse STATEMENT:  UPDATE users
        SET locale = 'en'
        WHERE locale = 'en_US'

rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_users_on_username"
DETAIL:  Key (username)=(Pxxx_Gxxxxxxxx) already exists.

In tal caso, come suggeriresti di risolvere il problema? L’output completo è allegato.

failed_discourse_upgrade_2021_01_31.txt (90.4 KB)

Negli ultimi tempi sono stati creati alcuni argomenti riguardanti la risoluzione dei duplicati. Esempio:

Grazie. Sto avendo problemi a far funzionare psql.

Ho riavviato il contenitore:

./launcher start app

Poi ho eseguito:

./launcher enter app

poi:

su postgres -c 'psql discourse'

Ma l’output è stato:

psql: errore: impossibile connettersi al server: impossibile connettersi al server: Nessuna tale file o directory
Il server è in esecuzione in locale e accetta
connessioni sul socket di dominio Unix “/var/run/postgresql/.s.PGSQL.5432”?

Esegui sudo -u postgres psql discourse

Prova sudo -u postgres psql discourse

Stesso messaggio di errore, purtroppo.

È andato a buon fine il primo ciclo di ricostruzione del launcher?

Se sì, il tuo database è già stato aggiornato a PostgreSQL 13, mentre i binari di PostgreSQL nella vecchia immagine dell’app si aspettano ancora una versione 10 o 12 del database, a seconda di cosa stai aggiornando.

cd /var/discourse/shared/standalone
ls -alh

Hai entrambe le directory postgres_data e postgres_data_old?

Assicurati che l’app sia arrestata, poi sposta o rinomina (non cancellare ancora, solo per sicurezza) la directory postgres_data, quindi

mv postgres_data_old postgres_data

E riprova con launcher start app.

Spero che questo aiuti!

Gunnar

Ho seguito questi passaggi e ho rinominato con successo l’utente duplicato. Tuttavia, ho riscontrato questo problema quando ho provato a reindicizzare.

@sam aveva suggerito in quella discussione: “Sì, per favore elimina le righe duplicate”, ma non so cosa significhi nel contesto degli avvisi e dei messaggi di errore che ricevo durante la reindicizzazione, che ora si è ampliato in:

REINDEX SCHEMA CONCURRENTLY public;
WARNING:  cannot reindex invalid index "public.index_incoming_referers_on_path_and_incoming_domain_id_ccnew" concurrently, skipping
WARNING:  cannot reindex invalid index "public.incoming_referers_pkey_ccnew1" concurrently, skipping
WARNING:  cannot reindex invalid index "public.index_incoming_referers_on_path_and_incoming_domain_id_ccnew1" concurrently, skipping
WARNING:  cannot reindex invalid index "public.index_incoming_referers_on_path_and_incoming_domain_id_cc_ccnew" concurrently, skipping
WARNING:  cannot reindex invalid index "public.index_incoming_referers_on_path_and_incoming_domain_id_c_ccnew1" concurrently, skipping
WARNING:  cannot reindex invalid index "public.incoming_referers_pkey_ccnew2" concurrently, skipping
WARNING:  cannot reindex invalid index "public.index_incoming_referers_on_path_and_incoming_domain_id_ccnew2" concurrently, skipping
WARNING:  cannot reindex invalid index "public.incoming_referers_pkey_ccnew_ccnew" concurrently, skipping
WARNING:  cannot reindex invalid index "pg_toast.pg_toast_19250_index_ccnew1" concurrently, skipping
WARNING:  cannot reindex invalid index "pg_toast.pg_toast_19250_index_ccnew2" concurrently, skipping
WARNING:  cannot reindex invalid index "pg_toast.pg_toast_19250_index_ccnew_ccnew" concurrently, skipping
ERROR:  could not create unique index "index_incoming_referers_on_path_and_incoming_domain_id_ccnew3"
DETAIL:  Key (path, incoming_domain_id)=(/votes/, 1165) is duplicated.

Si tratta di indici temporanei creati durante il processo di reindicizzazione. Ogni volta che si verificava un arresto anomalo a causa di duplicati, veniva lasciato almeno un indice temporaneo. Puoi riconoscerli dal nome, che termina con ccnew, ccnew1, ccnew2 e così via.

Puoi eliminarli accedendo a Psql ed eseguendo il comando DROP INDEX.

sudo ./launcher enter app
su postgres -c 'psql discourse'

DROP INDEX '<nome_indice>_ccnew';
DROP INDEX '<nome_indice>_ccnew1';

E così via. Assicurati di avere prima un backup del database, verifica che la reindicizzazione non sia attualmente in esecuzione e assicurati di eliminare solo gli indici _ccnew.

Maggiori informazioni in questo post:

Grazie ancora, Gunnar. Sono riuscito a eliminare alcuni degli indici ccnew, ma non tutti:

discourse=# DROP INDEX public.index_incoming_referers_on_path_and_incoming_domain_id_ccnew;
DROP INDEX
discourse=# DROP INDEX public.incoming_referers_pkey_ccnew1;
DROP INDEX
discourse=# DROP INDEX public.index_incoming_referers_on_path_and_incoming_domain_id_ccnew1;
DROP INDEX
discourse=# DROP INDEX public.index_incoming_referers_on_path_and_incoming_domain_id_cc_ccnew;
ERROR:  l'indice "index_incoming_referers_on_path_and_incoming_domain_id_cc_ccnew" non esiste
discourse=# DROP INDEX public.index_incoming_referers_on_path_and_incoming_domain_id_c_ccnew1;
ERROR:  l'indice "index_incoming_referers_on_path_and_incoming_domain_id_c_ccnew1" non esiste
discourse=# DROP INDEX public.incoming_referers_pkey_ccnew2;
DROP INDEX
discourse=# DROP INDEX public.incoming_referers_pkey_ccnew_ccnew;
ERROR:  l'indice "incoming_referers_pkey_ccnew_ccnew" non esiste
discourse=# DROP INDEX pg_toast.pg_toast_19250_index_ccnew1;
ERROR:  permesso negato: "pg_toast_19250_index_ccnew1" è un catalogo di sistema
discourse=# DROP INDEX pg_toast.pg_toast_19250_index_ccnew2;
ERROR:  permesso negato: "pg_toast_19250_index_ccnew2" è un catalogo di sistema
discourse=# DROP INDEX pg_toast.pg_toast_19250_index_ccnew_ccnew;
ERROR:  permesso negato: "pg_toast_19250_index_ccnew_ccnew" è un catalogo di sistema

In ogni caso, sembra che abbia rieseguito correttamente la ricreazione degli indici in seguito:

discourse=# REINDEX SCHEMA CONCURRENTLY public;
REINDEX

Quindi ho proceduto a completare l’aggiornamento, ma è fallito:

root@forum:/var/discourse# ./launcher rebuild app
Ensuring launcher is up to date
Fetching origin
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 3 (delta 2), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/discourse/discourse_docker
 * [new branch]      fix-prune-time -> origin/fix-prune-time
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Already up to date.
I, [2021-02-15T00:34:30.967636 #1]  INFO -- : Loading --stdin
I, [2021-02-15T00:34:30.973572 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2021-02-15T00:34:31.024271 #1]  INFO -- : Generating locales (this might take a while)...
Generation complete.

I, [2021-02-15T00:34:31.024803 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2021-02-15T00:34:31.029795 #1]  INFO -- :
I, [2021-02-15T00:34:31.030826 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2021-02-15T00:34:31.033498 #1]  INFO -- :
I, [2021-02-15T00:34:31.033875 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2021-02-15T00:34:31.036104 #1]  INFO -- :
I, [2021-02-15T00:34:31.036435 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2021-02-15T00:34:31.038583 #1]  INFO -- :
I, [2021-02-15T00:34:31.038915 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2021-02-15T00:34:31.041198 #1]  INFO -- :
I, [2021-02-15T00:34:31.041511 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2021/02/15 00:34:31 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory
I, [2021-02-15T00:34:31.055279 #1]  INFO -- :
I, [2021-02-15T00:34:31.055620 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2021-02-15T00:34:31.058156 #1]  INFO -- :
I, [2021-02-15T00:34:31.058442 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2021-02-15T00:34:31.060461 #1]  INFO -- :
I, [2021-02-15T00:34:31.060758 #1]  INFO -- : > mkdir -p /shared/postgres_run/13-main.pg_stat_tmp
I, [2021-02-15T00:34:31.062949 #1]  INFO -- :
I, [2021-02-15T00:34:31.063384 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/13-main.pg_stat_tmp
I, [2021-02-15T00:34:31.065117 #1]  INFO -- :
I, [2021-02-15T00:34:31.069700 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2021-02-15T00:34:31.073080 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2021-02-15T00:34:31.076629 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2021-02-15T00:34:31.079978 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2021-02-15T00:34:31.080365 #1]  INFO -- : > chown -R root /var/lib/postgresql/13/main
I, [2021-02-15T00:34:31.456272 #1]  INFO -- :
I, [2021-02-15T00:34:31.456523 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/13/bin/initdb -D /shared/postgres_data || exit 0
I, [2021-02-15T00:34:31.458416 #1]  INFO -- :
I, [2021-02-15T00:34:31.458635 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2021-02-15T00:34:31.489118 #1]  INFO -- :
I, [2021-02-15T00:34:31.489681 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2021-02-15T00:34:31.491900 #1]  INFO -- :
I, [2021-02-15T00:34:31.492294 #1]  INFO -- : > /root/upgrade_postgres
initdb: warning: abilitata l'autenticazione "trust" per le connessioni locali
Puoi modificare questa impostazione modificando pg_hba.conf o utilizzando l'opzione -A, oppure
--auth-local e --auth-host la prossima volta che esegui initdb.
debconf: in attesa della configurazione del pacchetto, poiché apt-utils non è installato
I, [2021-02-15T00:34:44.948743 #1]  INFO -- : Aggiornamento di PostgreSQL dalla versione 12 alla 13
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 la locale "en_US.UTF-8".
La codifica predefinita del database è stata di conseguenza impostata su "UTF8".
La configurazione predefinita della ricerca testuale sarà impostata su "english".

I checksum delle pagine di 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/13/bin/pg_ctl -D /shared/postgres_data_new -l logfile start

Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:2 http://deb.debian.org/debian buster InRelease [122 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 http://apt.postgresql.org/pub/repos/apt buster-pgdg InRelease [104 kB]
Get:5 http://security.debian.org/debian-security buster/updates/main amd64 Packages [267 kB]
Get:6 http://deb.debian.org/debian buster/main amd64 Packages [7,907 kB]
Get:7 http://deb.debian.org/debian buster-updates/main amd64 Packages.diff/Index [5,656 B]
Get:8 http://deb.debian.org/debian buster-updates/main amd64 Packages 2020-12-24-1401.30.pdiff [286 B]
Get:9 http://deb.debian.org/debian buster-updates/main amd64 Packages 2021-01-29-2000.47.pdiff [408 B]
Get:10 http://deb.debian.org/debian buster-updates/main amd64 Packages 2021-02-07-1359.56.pdiff [2,302 B]
Get:10 http://deb.debian.org/debian buster-updates/main amd64 Packages 2021-02-07-1359.56.pdiff [2,302 B]
Get:11 https://deb.nodesource.com/node_10.x buster InRelease [4,584 B]
Get:12 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 Packages [216 kB]
Get:13 https://deb.nodesource.com/node_10.x buster/main amd64 Packages [768 B]
Fetched 8,746 kB in 2s (4,421 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
I seguenti pacchetti aggiuntivi verranno installati:
  postgresql-client-12
Pacchetti suggeriti:
  postgresql-doc-12
I seguenti PACCHETTI NUOVI verranno installati:
  postgresql-12 postgresql-client-12
0 aggiornati, 2 installati di nuovo, 0 da rimuovere e 28 non aggiornati.
È necessario scaricare 16,1 MB di archivi.
Dopo questa operazione, verranno utilizzati 54,1 MB di spazio su disco aggiuntivo.
Get:1 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-client-12 amd64 12.6-1.pgdg100+1 [1,424 kB]
Get:2 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-12 amd64 12.6-1.pgdg100+1 [14.7 MB]
Fetched 16.1 MB in 1s (12.8 MB/s)
Selecting previously unselected package postgresql-client-12.
(Reading database ... 43899 files and directories currently installed.)
Preparing to unpack .../postgresql-client-12_12.6-1.pgdg100+1_amd64.deb ...
Unpacking postgresql-client-12 (12.6-1.pgdg100+1) ...
Selecting previously unselected package postgresql-12.
Preparing to unpack .../postgresql-12_12.6-1.pgdg100+1_amd64.deb ...
Unpacking postgresql-12 (12.6-1.pgdg100+1) ...
Setting up postgresql-client-12 (12.6-1.pgdg100+1) ...
update-alternatives: warning: forcing reinstallation of alternative /usr/share/postgresql/13/man/man1/psql.1.gz because link group psql.1.gz is broken
Setting up postgresql-12 (12.6-1.pgdg100+1) ...
Creating new PostgreSQL cluster 12/main ...
/usr/lib/postgresql/12/bin/initdb -D /var/lib/postgresql/12/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 la locale "C.UTF-8".
La codifica predefinita del database è stata di conseguenza impostata su "UTF8".
La configurazione predefinita della ricerca testuale sarà impostata su "english".

I checksum delle pagine di dati sono disabilitati.

correzione dei permessi sulla directory esistente /var/lib/postgresql/12/main ... 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:

    pg_ctlcluster 12 main start

Ver Cluster Port Status Owner    Data directory              Log file
12  main    5433 down   postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
update-alternatives: warning: forcing reinstallation of alternative /usr/share/postgresql/13/man/man1/postmaster.1.gz because link group postmaster.1.gz is broken
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Processing triggers for postgresql-common (223.pgdg100+1) ...
Building PostgreSQL dictionaries from installed myspell/hunspell packages...
Removing obsolete dictionary files:
Stopping PostgreSQL 12 database server: main.
Stopping PostgreSQL 13 database server: main.
Performing Consistency Checks
-----------------------------
Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Creating dump of global objects                             ok
Creating dump of database schemas
  discourse

*failure*

Consult the last few lines of "pg_upgrade_dump_16566.log" for
the probable cause of the failure.
Failure, exiting
-------------------------------------------------------------------------------------
UPGRADE OF POSTGRES FAILED

Please visit https://meta.discourse.org/t/postgresql-13-update/172563 for support.

You can run ./launcher start app to restart your app in the meanwhile




FAILED
--------------------
Pups::ExecError: /root/upgrade_postgres failed with return #<Process::Status: pid 46 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params "/root/upgrade_postgres"
1b91e47c88940d6c697c346fa8db3d4ab39bbc83f1340dc6f734ca0f9abe6eeb
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Non so perché il rebuild sia fallito, tranne che sembra avere a che fare con Postgres. Non so dove dovrebbe trovarsi il file di log „pg_upgrade_dump_16566.log“.

Idee?

Credo che significhi che l’aggiornamento non ha funzionato. Ho avuto un compito simile ieri.

Quello che ho fatto, credo, è stato spostare i dati di backup nuovamente in postgres_data, passare al modello pg10 (probabilmente 12 per te?), quindi ricostruire, e infine cambiare di nuovo il modello e ricostruire altre due volte per l’aggiornamento.

È una panoramica generale, ma è il meglio che posso fare dal mio telefono. L’aggiornamento a PostgreSQL 13 dovrebbe avere tutto ciò di cui hai bisogno.

Quello che ho fatto, credo, è stato spostare i dati di backup di nuovo in postgres_data, quindi passare al template pg10 (probabilmente 12 per te?), quindi ricostruire, e infine cambiare di nuovo il template e ricostruire altre due volte per l’aggiornamento.

Quindi lasciami verificare se ho capito. Devo:

  1. Rinominare postgres_data in qualcos’altro e poi rinominare il backup che ho creato in postgres_data.
  2. Rinominare postgres.template.yml in qualcos’altro e poi rinominare postgres.12.template.yml in postgres.template.yml.
  3. Eseguire ./launcher rebuild app.
  4. Ripristinare sia postgres_data che postgres.template.yml.
  5. Eseguire ./launcher rebuild app.
  6. Eseguire ./launcher rebuild app.

È corretto?

Ehi Roger. Dovrebbe essere qualcosa di molto simile a quello, ma non conosco esattamente la tua situazione, quindi non posso promettere nulla.

Oh, aspetta.

No. Nel file app.yml dovresti fare riferimento al template di PostgreSQL 12 invece che al template PostgreSQL standard. Stai modificando il tuo app.yml, non rinominando alcun file. Questo è spiegato abbastanza bene nella guida all’aggiornamento, credo.

Per il sito che ho appena sistemato, la directory postgres_data era vuota e poi (penso) il mio script ha eseguito un docker prune, che ha eliminato il container che, credo, avrebbe funzionato se avessi semplicemente riavviato tutto.

Se vuoi solo che venga sistemato e hai un budget, ti invito a consultare Redirecting….