Estou gerando dados fictícios com esta consulta:
INSERT INTO tbltest1 (id, kol1, kol2)
SELECT generate_series(1,10000), substr(md5(random()::text), 1, 25), substr(md5(random()::text), 1, 45)
FROM generate_series(1, 1000000);
Então, no meio do processo, surge este erro: não foi possível gravar no arquivo "pg_wal/xlogtemp.2399" sem espaço no dispositivo.
Obviamente, isso indica que não tenho mais espaço.
Então eu quero entrar no banco de dados emitindo o psql
comando " ". Mas este erro ".s.PGSQL.5432" aparece: a conexão com o servidor no soquete "/var/run/postgresql/.s.PGSQL.5432" falhou. nenhum arquivo ou diretório aparece.
Vejo que algum erro causará este erro ".s.PGSQL.5432" . Este é realmente um beco sem saída para mim.
Por que nenhum erro de espaço deixado é emitido? Por que os arquivos WAL não são reciclados? Eu tenho o archive_mode = off
, wal_level = logical
. O WAL deve ser reciclado nestas configurações. O que devo fazer para ativar o banco de dados novamente?
Vejo que ainda tenho muitos espaços disponíveis (cerca de 20 GB a mais) estou executando na VM em execução no host Win 10.
Está realmente me assombrando. Por favor ajude
Atualizar
Parece que o postgre não pode escrever em pg_wal devido a falta de espaço.
- eu verifico usando
$root df -h
- Então eu aumento o espaço: Inicialize a partir de USB ao vivo (Ubuntu ISO). Escolha "Experimente o Ubuntu" Abra o gparted Mova o espaço do HDD onde o postgre reside para o final do disco Expanda para consumir o espaço livre Reinicie a VM, sem usar a instrução ISO Full aqui e aqui também
- Faça
Memory Test
(memtest86+) usando o CD de inicialização (Ubuntu ISO acima). Não acho que este passo seja necessário. - Reebot o sistema operacional convidado (estou executando o servidor no VMWare Workstation)
- Certifique-se de que o Ubuntu consuma todo o espaço alocado. Instrução completa aqui . Ajuste à sua necessidade.
- Reinicie novamente.
- Faça login no Ubuntu e inicie o postgres como de costume
Agora o postgres pode ser executado normalmente. Não há mais erro ".s.PGSQL.5432".
Até agora, concluo que a falta de espaço no pg_wal pode causar o .s.PGSQL.5432
erro " ".
Agora estou enfrentando outro erro. Posso fazer " Select * from table Limit 10
" mas não consigo fazer consulta como " Select count(id) From table
". Há erro sobre o bloco de página : página inválida no bloco 62052 da relação base /13462/16387
Quaisquer comentários ou ajuda são muito apreciados.
Ubuntu 22.04 rodando em VM, Postgres 12.
[ 4
Quando o PostgreSQL cria um segmento WAL, ele primeiro o cria com o nome
xlogtemp.<process id>
e o escreve cheio de zeros. Só então o arquivo é renomeado para seu nome eventual.Se não houver espaço em disco suficiente para o PostgreSQL criar e preencher um novo segmento WAL, o servidor travará. A única maneira de fazê-lo funcionar novamente é aumentar o sistema de arquivos e iniciar o PostgreSQL.
Se você encontrar esse problema durante o carregamento em massa no banco de dados, isso não significa necessariamente que algo está errado com o arquivamento do WAL ou a reciclagem do WAL. Também pode significar que
pg_wal
está no mesmo sistema de arquivos que o diretório de dados. Para sistemas de produção, é uma boa ideia colocarpg_wal
um sistema de arquivos diferente e ter um link simbólicopg_wal
no diretório de dados.