On 29-08-2016 07:58, Luiz Carlos L. Nogueira Jr. wrote:
> Pessoal,
>
> Estávamos fazendo um vacuum full quando a VM "crashou".
> Depois de conseguirmos reiniciá-la, fizemos novamente o vacuum full e
> ele terminou normalmente.
> Só que quando vi, o tamanho do banco ficou uns 130GB maior, que é
> justamente o tamanho da tabela que estava tendo o vacuum quando "crashou".
> Olhando os tamanhos das maiores tabelas do banco, elas estão normais.
> Como fazer pra encontrar esse "espaço perdido"?
>
Já vi isso acontecer *eventualmente* pois o que ocorre é que o VACUUM
FULL reescreve em disco todos os datafiles e só faz o swap e remove os
antigos quando a transação for finalizada (aka commit). Quando acontece
um rollback em situações normais os novos datafiles que estavam sendo
gerados durante o processo sao removidos pelo PostgreSQL.
Então é bem provável que tenham ficado datafiles *perdidos* dentro do
seu $PGDATA/base/OID_DA_SUA_BASE.
Pelo meu histórico pessoal uma vez eu usei uma query pra identificar
esse fenômeno e determinar se essa teoria era correta. Tente usar a query:
SELECT file,
(file_stat).size,
pg_size_pretty((file_stat).size),
(file_stat).modification
FROM (SELECT file,
pg_stat_file('base/'||(SELECT oid FROM pg_database WHERE
datname = current_database())||'/'||file) as file_stat
FROM pg_ls_dir('base/'||(SELECT oid FROM pg_database WHERE
datname = current_database())) AS file
WHERE file ~ '[0-9]$'
AND file !~ '^t'
AND NOT EXISTS (SELECT 1
FROM pg_class
WHERE relfilenode::integer =
split_part(file,'.',1)::integer)) AS file
WHERE (file_stat).modification::date < current_date
ORDER BY 1;
Até onde me lembro ela não é 100% OK (creio que tenha que desconsiderar
tabelas temporarias)... mas pode ser um inicio.
De qualquer forma quando detectei de fato esse problema eu resolvi
fazendo dump/restore em um novo cluster com initdb.
Att,
--
Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral