Incapaz de atualizar para PostgreSQL 15/

Olá, li esta postagem: PostgreSQL 15 update - e tentei atualizar para a versão 15, no entanto, ao executar o comando de reconstrução, estou encontrando erros com os quais não estou familiarizado, e nenhuma de minhas pesquisas resolveu o problema. Agradeceria qualquer ajuda que puder obter aqui.

Ele reclama que tanto o Locale quanto o postgres foram inicializados a partir da versão 13 e não são compatíveis com a 15.

WARNING: Docker version 20.10.7 deprecated, recommend upgrade to 24.0.7 or newer.
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 600 app
app
2.0.20250129-0720: Pulling from discourse/base
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Status: Image is up to date for discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-02-25T12:02:47.588312 #1]  INFO -- : Reading from stdin
I, [2025-02-25T12:02:47.603317 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2025-02-25T12:02:47.608602 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2025-02-25T12:02:47.614271 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2025-02-25T12:02:47.619607 #1]  INFO -- : File > /root/install_postgres  chmod: +x  chown:
I, [2025-02-25T12:02:47.623993 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2025-02-25T12:02:47.624696 #1]  INFO -- : Replacing data_directory = '/var/lib/postgresql/15/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.628520 #1]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.629701 #1]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.635680 #1]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.636635 #1]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.637658 #1]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.638584 #1]  INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.639215 #1]  INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.639833 #1]  INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.640892 #1]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-25T12:02:47.641570 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-25T12:02:47.642114 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*::1\/128.*$) with host all all ::/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-25T12:02:47.642818 #1]  INFO -- : > if [ -f /root/install_postgres ]; then
  /root/install_postgres && rm -f /root/install_postgres
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
  socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi

failed to set locale!
[error] character map file `UTF-8' not found: No such file or directory
failed to set locale!
[error] default character map file `ANSI_X3.4-1968' not found: No such file or directory
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "en_US.UTF-8",
        LC_ALL = "en_US.UTF-8",
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
popen failure: Cannot allocate memory
initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"
I, [2025-02-25T12:02:49.979779 #1]  INFO -- : Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
Upgrading PostgreSQL from version 13 to 15

I, [2025-02-25T12:02:49.980481 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
I, [2025-02-25T12:02:49.983148 #1]  INFO -- : Terminating async processes
2025-02-25 12:02:50.007 UTC [51] FATAL:  database files are incompatible with server
2025-02-25 12:02:50.007 UTC [51] DETAIL:  The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 15.10 (Debian 15.10-1.pgdg120+1).

Agradeço desde já!

Este é talvez o mais sério - você precisa de mais RAM ou precisa adicionar swap.

Por favor, poste a saída destes diagnósticos rápidos:

Obrigado por dedicar seu tempo. Eu perdi completamente essa coisa de memória, aqui estão os resultados que você pediu:

root@glorious-discourse-forum:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"
root@glorious-discourse-forum:~# uptime
 13:27:58 up 1341 days, 22:37,  2 users,  load average: 0.07, 0.03, 0.00
root@glorious-discourse-forum:~# df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        49G   41G  7.7G  85% /
root@glorious-discourse-forum:~# free
              total        used        free      shared  buff/cache   available
Mem:        2040976      416492      436628       20940     1187856     1433788
Swap:       2097148       85248     2011900
root@glorious-discourse-forum:~# swapon
NAME      TYPE SIZE  USED PRIO
/swapfile file   2G 83.3M   -2
root@glorious-discourse-forum:~# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0  85248 436692 444416 743440    8    8   268    88    0    0  3  1 96  0  0
 0  0  85248 436684 444416 743440    0    0     0     0   50   87  0  0 100  0  0
 0  0  85248 436716 444416 743440    0    0     0     8   48   78  0  0 100  0  0
 0  0  85248 436716 444416 743440    0    0     0     6   39   63  0  0 100  0  0
 0  0  85248 436716 444416 743440    0    0     0     0   54   91  0  0 100  0  0
root@glorious-discourse-forum:~# dmesg|egrep -i "memory|oom|kill"
root@glorious-discourse-forum:~# ps auxrc
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      5781  0.0  0.1  40100  3332 pts/6    R+   13:28   0:00 ps

Obrigado. Acho que você poderia tentar adicionar apenas 2G ou 4G de swap. Mas a mensagem sobre o Docker desatualizado e a execução do 18.04LTS significam que você estaria em uma posição muito melhor se migrasse para uma nova instância com uma instalação nova do sistema operacional: 24.04 de preferência. Eu executo tanto o 24.04 quanto o 22.04 no momento.

Migrar para uma nova instância nova é provavelmente menos esforço no geral do que tentar atualizar no local. Pode até ser menos disruptivo. É muito provável que você tenha um pouco de tempo de inatividade, faça o que fizer.

O passo 1 é fazer um backup (com downloads) e baixá-lo para mantê-lo seguro. Também faça uma cópia do seu arquivo app.yml.

Eu fiz uma migração ontem, por motivos semelhantes. Além disso, eu poderia obter uma máquina melhor pelo mesmo custo mudando para uma oferta mais recente do provedor de hospedagem.

Eu segui a receita de migração e as dicas aqui

Também para melhores resultados, leia
Configuração de Implantação de Discourse Opiniosa de MKJ

Você também está com pouco espaço em disco, especialmente se adicionar swap. Eu geralmente faço
du -kx / | sort -n | tail -55
ou similar para ver se há algo grande que não precisa estar lá.

1 curtida

Ah, outra abordagem para migração, em vez de backup e restauração, é usar o rsync. Eu não fiz isso, mas aqui está uma receita:

O outro problema é que sua versão do Docker e o sistema operacional precisam ser atualizados.

A versão 24.0.7 ou mais recente do Docker requer um Ubuntu LTS superior a 18. O serviço de longo prazo desse LTS está fora de suporte.

Já vi alguns sites serem atualizados com o 18.04, mas a maioria deles não foi.

Já vi pessoas conseguirem fazer um dist-upgrade, mas o sucesso é incerto, e você realmente quer que remanescentes do seu sistema operacional de 6 anos causem problemas pelos próximos 5 anos em que o 24.04 é suportado? Além disso, uma atualização do 18.04 leva apenas ao 20.04, que tem suporte por cerca de mais 60 dias, então você precisaria executar 3 dist-upgrades para chegar ao sistema operacional mais recente.

Então, eu esbarrei exatamente nesse mesmo erro, só que executei ./launcher rebuild. Eu não estava seguindo os fóruns e os avisos e meio que executei a atualização cegamente. Como eu interrompo/reverto essa execução? Apenas Ctrl+C para sair da execução?

O que aconteceu? Houve um erro? Ele disse para executar a reconstrução novamente?

Você atualizou o Docker?

Você tentou

 ./launcher start app

Você olhou Atualização do PostgreSQL 15?

Parou de fazer qualquer coisa depois de DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 15.10 (Debian 15.10-1.pgdg120+1).
Reiniciei o servidor e isso o trouxe de volta.
Executando mais algumas atualizações agora com o Docker travado em 20 por algum motivo e outra dependência. Que ótima maneira de passar a noite de sexta-feira haha

Que chato.

Eu esperaria até segunda-feira e migraria para uma nova VM. Estou supondo que esta já está além do fim da vida útil.

Consegui atualizar o SO do host, a versão do Docker e, então, a atualização do DB funcionou. Também dei mais RAM para ele, haha. Deve durar mais uns 5 anos, né? Haha

Se você fizer atualizações de SO (especialmente docker), provavelmente sim!

2 curtidas