Atualização falhou (postgresql)

A atualização mais recente (incluindo PostgreSQL) resultou em um erro:

root@community:/var/discourse# ./launcher rebuild app

Garantindo que o launcher esteja atualizado

Buscando origem

Launcher atualizado

Parando o container antigo

+ /usr/bin/docker stop -t 60 app

app

cd /pups && git pull && /pups/bin/pups --stdin

Já está atualizado.

I, [2020-06-03T15:38:58.391364 #1] INFO -- : Carregando --stdin

I, [2020-06-03T15:38:58.398128 #1] INFO -- : > locale-gen $LANG && update-locale

I, [2020-06-03T15:38:58.731357 #1] INFO -- : Gerando locais (isso pode levar algum tempo)...

Geração concluída.

I, [2020-06-03T15:38:58.731849 #1] INFO -- : > mkdir -p /shared/postgres_run

I, [2020-06-03T15:38:58.751775 #1] INFO -- : 

I, [2020-06-03T15:38:58.756078 #1] INFO -- : > chown postgres:postgres /shared/postgres_run

I, [2020-06-03T15:38:58.765806 #1] INFO -- : 

I, [2020-06-03T15:38:58.766148 #1] INFO -- : > chmod 775 /shared/postgres_run

I, [2020-06-03T15:38:58.767966 #1] INFO -- : 

I, [2020-06-03T15:38:58.768305 #1] INFO -- : > rm -fr /var/run/postgresql

I, [2020-06-03T15:38:58.770246 #1] INFO -- : 

I, [2020-06-03T15:38:58.770626 #1] INFO -- : > ln -s /shared/postgres_run /var/run/postgresql

I, [2020-06-03T15:38:58.785523 #1] INFO -- : 

I, [2020-06-03T15:38:58.785863 #1] INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres já está em execução, pare o container ; exit 1

2020/06/03 15:38:58 socat[26] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Arquivo ou diretório não encontrado

I, [2020-06-03T15:38:58.911895 #1] INFO -- : 

I, [2020-06-03T15:38:58.912203 #1] INFO -- : > rm -fr /shared/postgres_run/.s*

I, [2020-06-03T15:38:58.914376 #1] INFO -- : 

I, [2020-06-03T15:38:58.914625 #1] INFO -- : > rm -fr /shared/postgres_run/*.pid

I, [2020-06-03T15:38:58.916280 #1] INFO -- : 

I, [2020-06-03T15:38:58.916527 #1] INFO -- : > mkdir -p /shared/postgres_run/12-main.pg_stat_tmp

I, [2020-06-03T15:38:58.917967 #1] INFO -- : 

I, [2020-06-03T15:38:58.918303 #1] INFO -- : > chown postgres:postgres /shared/postgres_run/12-main.pg_stat_tmp

I, [2020-06-03T15:38:58.919709 #1] INFO -- : 

I, [2020-06-03T15:38:58.925728 #1] INFO -- : Arquivo > /etc/service/postgres/run chmod: +x chown: 

I, [2020-06-03T15:38:58.928444 #1] INFO -- : Arquivo > /etc/service/postgres/log/run chmod: +x chown: 

I, [2020-06-03T15:38:58.931357 #1] INFO -- : Arquivo > /etc/runit/3.d/99-postgres chmod: +x chown: 

I, [2020-06-03T15:38:58.934190 #1] INFO -- : Arquivo > /root/upgrade_postgres chmod: +x chown: 

I, [2020-06-03T15:38:58.934528 #1] INFO -- : > chown -R root /var/lib/postgresql/12/main

I, [2020-06-03T15:40:44.749613 #1] INFO -- : 

I, [2020-06-03T15:40:44.750250 #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-06-03T15:40:44.751653 #1] INFO -- : 

I, [2020-06-03T15:40:44.751914 #1] INFO -- : > chown -R postgres:postgres /shared/postgres_data

I, [2020-06-03T15:40:47.940064 #1] INFO -- : 

I, [2020-06-03T15:40:47.940713 #1] INFO -- : > chown -R postgres:postgres /var/run/postgresql

I, [2020-06-03T15:40:47.942521 #1] INFO -- : 

I, [2020-06-03T15:40:47.942924 #1] INFO -- : > /root/upgrade_postgres

initdb: aviso: habilitando autenticação "trust" para conexões locais

Você pode alterar isso editando o pg_hba.conf ou usando a opção -A, ou

--auth-local e --auth-host na próxima vez que executar o initdb.

debconf: adiando configuração do pacote, pois o apt-utils não está instalado

I, [2020-06-03T15:42:45.495966 #1] INFO -- : Atualizando PostgreSQL da versão 10 para 12

Os arquivos pertencentes a este sistema de banco de dados serão de propriedade do usuário "postgres".

Este usuário também deve ser o proprietário do processo do servidor.

O cluster de banco de dados será inicializado com o local "en_US.UTF-8".

A codificação padrão do banco de dados foi definida como "UTF8".

A configuração padrão de pesquisa de texto será definida como "english".

Verificações de soma de controle de páginas de dados estão desativadas.

corrigindo permissões no diretório existente /shared/postgres_data_new ... ok

criando subdiretórios ... ok

selecionando implementação de memória compartilhada dinâmica ... posix

selecionando max_connections padrão ... 100

selecionando shared_buffers padrão ... 128MB

selecionando fuso horário padrão ... Etc/UTC

criando arquivos de configuração ... ok

executando script de inicialização ... ok

realizando inicialização pós-inicialização ... ok

sincronizando dados com o disco ... ok

Sucesso. Agora você pode iniciar o servidor de banco de dados usando:

/usr/lib/postgresql/12/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]

Hit:2 http://deb.debian.org/debian buster InRelease

Get:3 http://deb.debian.org/debian buster-updates InRelease [49,3 kB]

Get:4 https://deb.nodesource.com/node_10.x buster InRelease [4.584 B]

Get:5 http://apt.postgresql.org/pub/repos/apt buster-pgdg InRelease [84,6 kB]

Get:6 http://security.debian.org/debian-security buster/updates/main amd64 Packages [201 kB]

Get:7 https://deb.nodesource.com/node_10.x buster/main amd64 Packages [768 B]

Get:8 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 Packages [171 kB]

Baixados 577 kB em 1s (698 kB/s)

Lendo listas de pacotes...

Lendo listas de pacotes...

Construindo árvore de dependências...

Lendo informações de estado...

Os seguintes pacotes adicionais serão instalados:

postgresql-client-10

Pacotes sugeridos:

postgresql-doc-10

Os seguintes NOVOS pacotes serão instalados:

postgresql-10 postgresql-client-10

0 atualizados, 2 novos instalados, 0 a remover e 10 não atualizados.

É necessário baixar 6.390 kB de arquivos.

Após esta operação, 30,6 MB de espaço adicional em disco serão utilizados.

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]

Baixados 6.390 kB em 0s (38,2 MB/s)

Selecionando pacote anteriormente não selecionado: postgresql-client-10.

(Lendo banco de dados ... 43929 arquivos e diretórios atualmente instalados.)

Preparando para descompactar .../postgresql-client-10_10.13-1.pgdg100+1_amd64.deb ...

Descompactando postgresql-client-10 (10.13-1.pgdg100+1) ...

Selecionando pacote anteriormente não selecionado: postgresql-10.

Preparando para descompactar .../postgresql-10_10.13-1.pgdg100+1_amd64.deb ...

Descompactando postgresql-10 (10.13-1.pgdg100+1) ...

Configurando postgresql-client-10 (10.13-1.pgdg100+1) ...

update-alternatives: aviso: forçando reinstalação da alternativa /usr/share/postgresql/12/man/man1/psql.1.gz porque o grupo de links psql.1.gz está quebrado

Configurando postgresql-10 (10.13-1.pgdg100+1) ...

Criando novo cluster PostgreSQL 10/main ...

/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --auth-local peer --auth-host md5

Os arquivos pertencentes a este sistema de banco de dados serão de propriedade do usuário "postgres".

Este usuário também deve ser o proprietário do processo do servidor.

O cluster de banco de dados será inicializado com o local "C.UTF-8".

A codificação padrão do banco de dados foi definida como "UTF8".

A configuração padrão de pesquisa de texto será definida como "english".

Verificações de soma de controle de páginas de dados estão desativadas.

corrigindo permissões no diretório existente /var/lib/postgresql/10/main ... ok

criando subdiretórios ... ok

selecionando max_connections padrão ... 100

selecionando shared_buffers padrão ... 128MB

selecionando fuso horário padrão ... Etc/UTC

selecionando implementação de memória compartilhada dinâmica ... posix

criando arquivos de configuração ... ok

executando script de inicialização ... ok

realizando inicialização pós-inicialização ... ok

sincronizando dados com o disco ... ok

Sucesso. Agora você pode iniciar o servidor de banco de dados usando:

pg_ctlcluster 10 main start

Aviso: O selected stats_temp_directory /var/run/postgresql/10-main.pg_stat_tmp

não é gravável para o proprietário do cluster. Esta configuração não será adicionada no

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: aviso: forçando reinstalação da alternativa /usr/share/postgresql/12/man/man1/postmaster.1.gz porque o grupo de links postmaster.1.gz está quebrado

invoke-rc.d: não foi possível determinar o nível de execução atual

invoke-rc.d: a política-rc.d negou a execução de start.

Processando gatilhos para postgresql-common (213.pgdg100+1) ...

Construindo dicionários PostgreSQL a partir de pacotes myspell/hunspell instalados...

Removendo arquivos de dicionário obsoletos:

Parando servidor de banco de dados PostgreSQL 10: main.

Parando servidor de banco de dados PostgreSQL 12: main.

Realizando verificações de consistência

-----------------------------

Verificando versões do cluster ok

O cluster de origem não foi desligado corretamente.

Falha, saindo

-------------------------------------------------------------------------------------

ATUALIZAÇÃO DO POSTGRES FALHOU

Por favor, visite https://meta.discourse.org/t/postgresql-12-update/151236 para obter suporte

Você pode executar ./launcher start app para reiniciar seu aplicativo enquanto isso

FALHOU

--------------------

Pups::ExecError: /root/upgrade_postgres falhou com retorno #<Process::Status: pid 45 exit 1>

Local da falha: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec falhou com os parâmetros "/root/upgrade_postgres"

674042fc06e2af0c08a0a09c46406a0b18b1f08b9140e037fffe1053188bd1c0

** FALHA NA INICIALIZAÇÃO ** Por favor, role para cima e procure por mensagens de erro anteriores, pode haver mais de uma.

./discourse-doctor pode ajudar a diagnosticar o problema.

root@community:/var/discourse#

Alguma ideia do porquê?

Você leu este post?

Sim, eu fiz isso antes. Não conseguimos fazer a atualização funcionar.

Leia toda a seção de FAQ aqui:

Já tentei a solução alternativa, mas não funcionou.

O log está cheio de:

2020-06-03 16:01:21.074 UTC [693] FATAL: o diretório de dados “/shared/postgres_data” tem propriedade incorreta
2020-06-03 16:01:21.074 UTC [693] HINT: O servidor deve ser iniciado pelo usuário que é proprietário do diretório de dados.

Após fazer login no contêiner, tentei desligá-lo manualmente:

root@community-app:/etc/postgresql/10/main# service postgresql stop

[FAIL] Parando o servidor de banco de dados PostgreSQL 10: main[…] Erro: O proprietário da configuração (postgres:106) e o proprietário dos dados (Debian-exim:105) não coincidem, e o proprietário da configuração não é root … falhou!

falhou!

Executar chown -R postgres postgres_data em /shared após entrar no contêiner Docker resolveu o problema.