Aggiornamento di PostgreSQL 15

Aggiornamento su ARM (aarch64) con locale non predefinito

Ho appena trascorso del tempo a correggere un aggiornamento difettoso su un singolo server con una configurazione a due container.

  1. La sua CPU è ARM
  2. Discourse era configurato con il locale en_UK.UTF-8

Passo dopo passo, ho capito che:

  1. tianon/postgres-upgrade:13-to-15 non funziona su ARM
  2. La configurazione del locale è memorizzata in share/${CONTAINER}/postgres_data/postgresql.conf

Ho iniziato commentando la parte env: del container dati, per assicurarmi che utilizzasse i locali predefiniti.

Quindi, per uscire dal pasticcio dell’aggiornamento, ho compiuto un passo pericoloso, assumendo che le differenze di collazione tra en_GB e en_US fossero trascurabili, e ho spietatamente aggiornato l’intero cluster a en_US:

UPDATE pg_database SET datctype='en_US.UTF-8', datcollate='en_US.UTF-8';

Non sono sicuro che questo passaggio sia necessario, potrebbe variare (YMMV). Lo lascio qui per commenti da parte di persone più esperte, e non lo consiglio affatto per lingue diverse!

Poi ho sostituito il locale in postgresql.conf:

sed -i -e 's/en_GB/en_US/g' shared/data/postgres_data/postgresql.conf
sudo -H -u discourse ./launcher rebuild data
...
UPGRADE OF POSTGRES COMPLETE

:tada:

Non pensare che sia stato facile: non sto menzionando il lungo percorso di esplorazione delle opzioni, specialmente perché quando sono intervenuto, l’interfaccia di amministrazione non era disponibile e l’ultimo backup era stato effettuato 6 giorni fa. Ho dovuto armeggiare prima di poter arrivare a una risoluzione adeguata - o almeno funzionante.

Spero che questo possa far risparmiare tempo ad alcune persone.

5 Mi Piace