AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 306203
Accepted
ITChap
ITChap
Asked: 2022-01-18 23:01:50 +0800 CST2022-01-18 23:01:50 +0800 CST 2022-01-18 23:01:50 +0800 CST

Recuperar espaço após uma falha de VACUUM FULL

  • 772

Cometi um pequeno erro de cálculo e meu VACUUM FULL acabou enchendo os discos da instância. Consegui liberar espaço suficiente para reiniciar o postgres, mas temo que não seja suficiente para executar VACUUM FULL até a conclusão.

Existe alguma maneira de liberar o espaço usado pela execução VACUUM FULL com falha?

PS: Aqui estão as opções que eu useiVACUUM (FULL, VERBOSE, ANALYZE, INDEX_CLEANUP)

postgresql vacuum
  • 2 2 respostas
  • 384 Views

2 respostas

  • Voted
  1. Best Answer
    Laurenz Albe
    2022-01-19T03:44:13+08:002022-01-19T03:44:13+08:00

    Se VACUUM (FULL)falhar, todo o espaço em disco preenchido será liberado.

    A exceção a essa regra é se o servidor travar durante VACUUM (FULL)a execução (o que pode acontecer se você ficar sem espaço em disco). Após uma falha (e recuperação de falha), arquivos órfãos podem ser deixados para trás no disco. Não existe uma maneira simples de se livrar desses arquivos, e você certamente não pode fazê-lo via SQL.

    Se você conhece o PostgreSQL muito bem, pode descobrir quais arquivos são seguros para excluir, mas corre o risco de corromper seu banco de dados se excluir um arquivo errado.

    A única maneira segura que conheço é:

    1. pg_dumpo banco de dados

    2. solte o banco de dados e crie-o novamente (vazio)

    3. restaurar o dump da primeira etapa

    • 4
  2. Erwin Brandstetter
    2022-01-19T15:47:31+08:002022-01-19T15:47:31+08:00

    O que Laurenz disse.

    Mas, citando o manual :

    Para limpar uma mesa, normalmente é preciso ser o dono da mesa ou um superusuário. No entanto, os proprietários de banco de dados podem limpar todas as tabelas em seus bancos de dados, exceto catálogos compartilhados. (A restrição para catálogos compartilhados significa que um verdadeiro banco de dados VACUUMsó pode ser executado por um superusuário.) VACUUMignorará todas as tabelas que o usuário chamador não tiver permissão para limpar.

    Ou seja, se você emitiu VACUUM FULLcomo superusuário, objetos compartilhados também podem ser afetados e você precisa despejar e restaurar todo o cluster para ter certeza: ( pg_dumpall). (Normalmente, a maior parte dos arquivos zombi estaria localizada no diretório do banco de dados afetado.)

    Pensei em criar um novo banco de dados baseado no afetado TEMPLATEdiretamente, o que é muito mais rápido do que um ciclo completo de despejo/restauração. (Requer armazenamento disponível suficiente, é claro). Infelizmente, como isso apenas copia arquivos físicos de um banco de dados, incluiria os arquivos-zombi dos quais você está tentando se livrar.

    Lembre-se de que você precisa de espaço livre suficiente para um arquivo pg_dump. O arquivo de despejo pode ser maior ou menor que o próprio banco de dados. Como você tem problemas com o armazenamento gratuito disponível, considere despejar em um local físico diferente.

    • 1

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve