Falha na atualização do PostgreSQL a partir da China

dados não podem ser reconstruídos

./launcher rebuild data
x86_64 arch detectado.
Garantindo que o launcher esteja atualizado
Launcher está atualizado
2.0.20250129-0720: Puxando de docker-hub-china/discourse-base
Digest: sha256:d798a945ca4d31c29e5d263cdaf807bafab9b5f6737be0b1b852bea0063a3b91
Status: Imagem está atualizada para registry.cn-wulanchabu.aliyuncs.com/docker-hub-china/discourse-base:2.0.20250129-0720
registry.cn-wulanchabu.aliyuncs.com/docker-hub-china/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-06T04:49:43.809493 #1]  INFO -- : Lendo de stdin
I, [2025-02-06T04:49:43.812252 #1]  INFO -- : Pulei o hook before_code ausente
I, [2025-02-06T04:49:43.812294 #1]  INFO -- : Pulei o hook before_db_migrate ausente
I, [2025-02-06T04:49:43.812309 #1]  INFO -- : Pulei o hook after_code ausente
I, [2025-02-06T04:49:43.816721 #1]  INFO -- : Arquivo > /etc/service/postgres/run  chmod: +x  chown: 
I, [2025-02-06T04:49:43.820580 #1]  INFO -- : Arquivo > /etc/service/postgres/log/run  chmod: +x  chown: 
I, [2025-02-06T04:49:43.824283 #1]  INFO -- : Arquivo > /etc/runit/3.d/99-postgres  chmod: +x  chown: 
I, [2025-02-06T04:49:43.827979 #1]  INFO -- : Arquivo > /root/install_postgres  chmod: +x  chown: 
I, [2025-02-06T04:49:43.832007 #1]  INFO -- : Arquivo > /root/upgrade_postgres  chmod: +x  chown: 
I, [2025-02-06T04:49:43.832273 #1]  INFO -- : Substituindo data_directory = '/var/lib/postgresql/15/main' por data_directory = '/shared/postgres_data' em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T04:49:43.832904 #1]  INFO -- : Substituindo (?-mix:#?listen_addresses *=.*) por listen_addresses = '*' em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T04:49:43.833313 #1]  INFO -- : Substituindo (?-mix:#?synchronous_commit *=.*) por synchronous_commit = $db_synchronous_commit em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T04:49:43.843122 #1]  INFO -- : Substituindo (?-mix:#?shared_buffers *=.*) por shared_buffers = $db_shared_buffers em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T04:49:43.843548 #1]  INFO -- : Substituindo (?-mix:#?work_mem *=.*) por work_mem = $db_work_mem em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T04:49:43.843885 #1]  INFO -- : Substituindo (?-mix:#?default_text_search_config *=.*) por default_text_search_config = '$db_default_text_search_config' em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T04:49:43.844162 #1]  INFO -- : Substituindo (?-mix:#?checkpoint_segments *=.*) por checkpoint_segments = $db_checkpoint_segments em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T04:49:43.844439 #1]  INFO -- : Substituindo (?-mix:#?logging_collector *=.*) por logging_collector = $db_logging_collector em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T04:49:43.844732 #1]  INFO -- : Substituindo (?-mix:#?log_min_duration_statement *=.*) por log_min_duration_statement = $db_log_min_duration_statement em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T04:49:43.845050 #1]  INFO -- : Substituindo (?-mix:^#local +replication +postgres +peer$) por local replication postgres  peer em /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T04:49:43.845283 #1]  INFO -- : Substituindo (?-mix:^host.*all.*all.*127.*$) por host all all 0.0.0.0/0 md5 em /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T04:49:43.845505 #1]  INFO -- : Substituindo (?-mix:^host.*all.*all.*::1\\/128.*$) por host all all ::/0 md5 em /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T04:49:43.845723 #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

2025/02/06 04:49:45 socat[33] E connect(, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Connection refused
initdb: warning: enabling "trust" authentication for local connections
initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.

Seus logs parecem incompletos, mas o trecho abaixo pode fornecer uma dica.

socat[33] E connect(, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Connection refused

Você também está vendo o erro abaixo bem no final da saída do seu log?

The source cluster was not shut down cleanly

Se sim, você pode tentar seguir estas instruções.

Nenhum contêiner está em execução

Você está vendo algum erro nessa primeira etapa?

Eu usei os métodos data.yml e web_only.yml

Você ainda pode seguir as mesmas instruções, mas substitua quaisquer ocorrências de app ou standalone por data.

Ainda não conectado

$ ./launcher enter data
x86_64 arch detectado.
root@sober-data:/# export SVWAIT=300
sv stop nginx
sv stop unicorn
sv stop postgres
exit
fail: nginx: impossível mudar para o diretório do serviço: arquivo não existe
fail: unicorn: impossível mudar para o diretório do serviço: arquivo não existe
ok: down: postgres: 0s, normalmente up
logout

Isso implica que você estava conectado ao contêiner. (Apenas certifique-se de que o contêiner web_only permaneça parado durante a reconstrução do contêiner data.)

ok: down: postgres: 0s, normally up

Esta é a saída que importa. Significa que o postgres foi encerrado corretamente e você pode prosseguir para os próximos passos.

 ./launcher enter  data
detectado arquitetura x86_64.
root@sober-data:/# sv stop postgres
ok: parado: postgres: 0s, normalmente ativado
root@sober-data:/# exit
logout
root@sober:/var/discourse$ ./launcher rebuild  data
detectado arquitetura x86_64.
Garantindo que o launcher está atualizado
Launcher está atualizado
Parando container antigo
+ /usr/bin/docker stop -t 600 data
dados
2.0.20250129-0720: Puxando do docker-hub-china/discourse-base
Digest: sha256:d798a945ca4d31c29e5d263cdaf807bafab9b5f6737be0b1b852bea0063a3b91
Status: A imagem está atualizada para registry.cn-wulanchabu.aliyuncs.com/docker-hub-china/discourse-base:2.0.20250129-0720
registry.cn-wulanchabu.aliyuncs.com/docker-hub-china/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-06T06:19:20.379635 #1]  INFO -- : Lendo de stdin
I, [2025-02-06T06:19:20.380959 #1]  INFO -- : Pulei o hook missing before_code
I, [2025-02-06T06:19:20.380976 #1]  INFO -- : Pulei o hook missing before_db_migrate
I, [2025-02-06T06:19:20.380983 #1]  INFO -- : Pulei o hook missing after_code
I, [2025-02-06T06:19:20.383923 #1]  INFO -- : Arquivo > /etc/service/postgres/run  chmod: +x  chown: 
I, [2025-02-06T06:19:20.386435 #1]  INFO -- : Arquivo > /etc/service/postgres/log/run  chmod: +x  chown: 
I, [2025-02-06T06:19:20.389343 #1]  INFO -- : Arquivo > /etc/runit/3.d/99-postgres  chmod: +x  chown: 
I, [2025-02-06T06:19:20.391719 #1]  INFO -- : Arquivo > /root/install_postgres  chmod: +x  chown: 
I, [2025-02-06T06:19:20.394375 #1]  INFO -- : Arquivo > /root/upgrade_postgres  chmod: +x  chown: 
I, [2025-02-06T06:19:20.394471 #1]  INFO -- : Substituindo data_directory = '/var/lib/postgresql/15/main' por data_directory = '/shared/postgres_data' em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T06:19:20.394742 #1]  INFO -- : Substituindo (?-mix:#?listen_addresses *=.*) por listen_addresses = '*' em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T06:19:20.394972 #1]  INFO -- : Substituindo (?-mix:#?synchronous_commit *=.*) por synchronous_commit = $db_synchronous_commit em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T06:19:20.395126 #1]  INFO -- : Substituindo (?-mix:#?shared_buffers *=.*) por shared_buffers = $db_shared_buffers em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T06:19:20.395261 #1]  INFO -- : Substituindo (?-mix:#?work_mem *=.*) por work_mem = $db_work_mem em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T06:19:20.395400 #1]  INFO -- : Substituindo (?-mix:#?default_text_search_config *=.*) por default_text_search_config = '$db_default_text_search_config' em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T06:19:20.395510 #1]  INFO -- : Substituindo (?-mix:#?checkpoint_segments *=.*) por checkpoint_segments = $db_checkpoint_segments em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T06:19:20.395622 #1]  INFO -- : Substituindo (?-mix:#?logging_collector *=.*) por logging_collector = $db_logging_collector em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T06:19:20.395723 #1]  INFO -- : Substituindo (?-mix:#?log_min_duration_statement *=.*) por log_min_duration_statement = $db_log_min_duration_statement em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T06:19:20.395845 #1]  INFO -- : Substituindo (?-mix:^#local +replication +postgres +peer$) por local replication postgres  peer em /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T06:19:20.395930 #1]  INFO -- : Substituindo (?-mix:^host.*all.*all.*127.*$) por host all all 0.0.0.0/0 md5 em /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T06:19:20.396007 #1]  INFO -- : Substituindo (?-mix:^host.*all.*all.*::1\/128.*$) por host all all ::/0 md5 em /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T06:19:20.396096 #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

initdb: warning: ativando a autenticação "trust" para conexões locais
initdb: dica: Você pode alterar isso editando o pg_hba.conf ou usando a opção -A, ou --auth-local e --auth-host, na próxima execução do initdb.

A reconstrução está travada neste ponto? Se sim, cancele-a e execute isto em vez disso, depois publique os resultados.

./launcher start data
./launcher enter data
psql --version
apt-get update

Muito obrigado. Vamos voltar à versão do Docker e ao arquivo postgres.template.yml

./launcher rebuild data
detectada arquitetura x86_64.
Garantindo que o launcher esteja atualizado
Launcher está atualizado
Parando o container antigo
+ /usr/bin/docker stop -t 600 data
data
2.0.20250129-0720: Baixando do docker-hub-china/discourse-base
Digest: sha256:d798a945ca4d31c29e5d263cdaf807bafab9b5f6737be0b1b852bea0063a3b91
Status: Imagem atualizada para registry.cn-wulanchabu.aliyuncs.com/docker-hub-china/discourse-base:2.0.20250129-0720
registry.cn-wulanchabu.aliyuncs.com/docker-hub-china/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-06T07:02:42.768651 #1]  INFO -- : Lendo de stdin
I, [2025-02-06T07:02:42.769907 #1]  INFO -- : Pulo do hook missing before_code
I, [2025-02-06T07:02:42.769923 #1]  INFO -- : Pulo do hook missing before_db_migrate
I, [2025-02-06T07:02:42.769933 #1]  INFO -- : Pulo do hook after_code
I, [2025-02-06T07:02:42.772767 #1]  INFO -- : Arquivo > /etc/service/postgres/run  chmod: +x  chown: 
I, [2025-02-06T07:02:42.775230 #1]  INFO -- : Arquivo > /etc/service/postgres/log/run  chmod: +x  chown: 
I, [2025-02-06T07:02:42.777690 #1]  INFO -- : Arquivo > /etc/runit/3.d/99-postgres  chmod: +x  chown: 
I, [2025-02-06T07:02:42.779645 #1]  INFO -- : Arquivo > /root/install_postgres  chmod: +x  chown: 
I, [2025-02-06T07:02:42.781825 #1]  INFO -- : Arquivo > /root/upgrade_postgres  chmod: +x  chown: 
I, [2025-02-06T07:02:42.781974 #1]  INFO -- : Substituindo data_directory = '/var/lib/postgresql/15/main' por data_directory = '/shared/postgres_data' em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T07:02:42.782261 #1]  INFO -- : Substituindo (?-mix:#?listen_addresses *=.*) por listen_addresses = '*' em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T07:02:42.782427 #1]  INFO -- : Substituindo (?-mix:#?synchronous_commit *=.*) por synchronous_commit = $db_synchronous_commit em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T07:02:42.782551 #1]  INFO -- : Substituindo (?-mix:#?shared_buffers *=.*) por shared_buffers = $db_shared_buffers em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T07:02:42.782661 #1]  INFO -- : Substituindo (?-mix:#?work_mem *=.*) por work_mem = $db_work_mem em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T07:02:42.782762 #1]  INFO -- : Substituindo (?-mix:#?default_text_search_config *=.*) por default_text_search_config = '$db_default_text_search_config' em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T07:02:42.782877 #1]  INFO -- : Substituindo (?-mix:#?checkpoint_segments *=.*) por checkpoint_segments = $db_checkpoint_segments em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T07:02:42.782974 #1]  INFO -- : Substituindo (?-mix:#?logging_collector *=.*) por logging_collector = $db_logging_collector em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T07:02:42.783076 #1]  INFO -- : Substituindo (?-mix:#?log_min_duration_statement *=.*) por log_min_duration_statement = $db_log_min_duration_statement em /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T07:02:42.783180 #1]  INFO -- : Substituindo (?-mix:^#local +replication +postgres +peer$) por local replication postgres  peer em /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T07:02:42.783258 #1]  INFO -- : Substituindo (?-mix:^host.*all.*all.*127.*$) por host all all 0.0.0.0/0 md5 em /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T07:02:42.783334 #1]  INFO -- : Substituindo (?-mix:^host.*all.*all.*::1\/128.*$) por host all all ::/0 md5 em /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T07:02:42.783416 #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 já está em execução, pare o container ; exit 1
fi

initdb: aviso: habilitando autenticação "trust" para conexões locais
initdb: dica: Você pode alterar isso editando o pg_hba.conf ou usando a opção -A, ou --auth-local e --auth-host, na próxima execução do initdb.

2.0.20250129-0720: Puxando do docker-hub-china/discourse-base

Você pode confirmar se o seu servidor está na China?

Espelho não é problema, este é o método de aceleração de rede espelho da China, caso contrário, o espelho não tem velocidade de rede.

Eu movi suas consultas para um novo tópico. Acredito que isso esteja relacionado à execução da atualização a partir da China.

Com base na sua saída de log, a reconstrução parece falhar na etapa apt-get update. Eu recomendaria usar uma VPN para conectar seu servidor aos repositórios apt.

Eu também faço um processo de aceleração de rede chinês para apt-get update. Gostaria de saber qual software é atualizado principalmente para apt-get update

Prefiro saber qual é a causa raiz de /shared/postgres_run/.s.PGSQL.5432 não poder se conectar

Você consegue acessar o repositório abaixo do seu servidor?

curl -v https://apt.postgresql.org/pub/repos/apt/

O repositório é necessário para instalar os pacotes antigos do PostgreSQL usados durante a atualização.

Isso geralmente é causado quando o banco de dados não foi encerrado corretamente. Nós o corrigimos anteriormente quando você iniciou e parou o contêiner data. O erro não é visto na sua saída de log mais recente.

1 curtida

Você quer dizer que a versão do PostgreSQL está muito antiga, causando problemas. Esta atualização pode ser integrada ao processamento do Discourse/base no espelho. Eu uso o Discourse/base do espelho: 2.0.20250129-0720.

Há algum problema com o meu entendimento? Qual é o número da versão do PostgreSQL que funciona corretamente e o número da versão do PostgreSQL que tem problemas?

Ou talvez o problema resida no fato de que o espelho que estou usando é muito recente, causando problemas com a construção dos dados. Preciso construir os dados usando o espelho Discourse/base: 2.0.20250114-0014 para acomodar a atualização do PostgreSQL.

Fiz o upgrade do PostgreSQL15

Os modelos precisam ser usados em sequência

postgres.13.template.yml
postgres.15.template.yml
postgres.template.yml

Configuração de aceleração de rede da China para os arquivos postgres.13.template.yml e postgres.15.template.yml

run:
  - exec: cat /etc/os-release && psql --version
  - exec: |
      if [ -f /etc/apt/sources.list ]; then
        sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
      else
        echo "deb http://mirrors.ustc.edu.cn/debian bookworm main contrib non-free non-free-firmware" | sudo tee /etc/apt/sources.list
        echo "deb http://mirrors.ustc.edu.cn/debian bookworm-updates main contrib non-free non-free-firmware" | sudo tee -a /etc/apt/sources.list
      fi
  - exec: |
      if [ -f /etc/apt/sources.list.d/debian.sources ]; then
        sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources
      else
        sudo bash -c 'cat > /etc/apt/sources.list.d/debian.sources <<EOF
        URIs: http://mirrors.ustc.edu.cn/debian
        Suites: bookworm bookworm-updates
        Components: main contrib non-free non-free-firmware
        Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

        Types: deb
        URIs: http://mirrors.ustc.edu.cn/debian-security
        Suites: bookworm-security
        Components: main contrib non-free non-free-firmware
        Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
        EOF'
      fi
  - exec: cat /etc/apt/sources.list && cat /etc/apt/sources.list.d/debian.sources
2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.