Atualização do PostgreSQL 15

Upgrade em ARM (aarch64) com locale não padrão

Passei um tempo corrigindo um upgrade com falha em um servidor único com configuração de dois contêineres.

  1. Sua CPU é ARM
  2. O Discourse foi configurado com o locale en_UK.UTF-8

Passo a passo, descobri que:

  1. tianon/postgres-upgrade:13-to-15 não funciona em ARM
  2. A configuração do locale é armazenada em share/${CONTAINER}/postgres_data/postgresql.conf

Comecei comentando a parte env: do contêiner de dados, para garantir que ele usasse os locales padrão.

Assim, para sair da bagunça do upgrade, tomei uma medida arriscada, assumindo que as diferenças de colação entre en_GB e en_US eram negligenciáveis, e atualizei brutalmente todo o cluster para en_US:

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

Eu não tenho certeza se este passo é necessário, pode variar para você (YMMV). Deixo aqui para que pessoas mais experientes comentem, e eu não recomendo isso de forma alguma para idiomas diferentes!

Então, substituí o locale em 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:

Não pense que foi fácil: não estou mencionando o longo caminho de exploração de opções, especialmente porque quando interveni, a interface de administração estava indisponível e o último backup foi feito há 6 dias. Eu tive que mexer antes de conseguir uma resolução adequada – ou pelo menos, funcional.

Espero que isso economize tempo de algumas pessoas.

5 curtidas