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 / 315986
Accepted
ConanTheGerbil
ConanTheGerbil
Asked: 2022-08-24 23:43:31 +0800 CST2022-08-24 23:43:31 +0800 CST 2022-08-24 23:43:31 +0800 CST

Ferramentas de corrupção de dados do Postgres?

  • 772

Existem técnicas/ferramentas/metodologias para investigar corrupção de nível de linha em uma tabela postgres?

A maioria das soluções propostas neste fórum se resume a 'tente fazer um VACUUM FULL para reconstruir a tabela, se isso não funcionar, solte a tabela e restaure do backup'

Existe alguma maneira de realmente corrigir os dados? existe alguma maneira de ler e editar manualmente os arquivos de dados brutos do postgres e remover / reparar apenas as linhas corrompidas?

O sistema em que estou trabalhando lê dados diretamente de um feed externo para uma tabela postgres e, em seguida, mostra evidências de corrupção antes que o processo de backup noturno tenha a chance de salvá-lo. Reexecutar o feed externo não é uma opção, portanto, na prática, se houver alguma corrupção, os dados do dia inteiro serão perdidos.

windows postgresql-14
  • 1 1 respostas
  • 33 Views

1 respostas

  • Voted
  1. Best Answer
    Vérace
    2022-08-25T20:56:17+08:002022-08-25T20:56:17+08:00

    Existem duas (bem, uma e um wrapper) ferramentas que podem ser incluídas no PostgreSQL que podem ajudá-lo aqui - amcheck e pg_amcheck .

    amcheck:

    amchecké um módulo contrib (doravante, cm) - esses são recursos adicionais fornecidos como parte da distribuição de origem, mas não ativados por padrão. Observe que muitos desses cm's são amplamente usados ​​e também que muitos sugerem que eles devem vir por padrão - no entanto, a filosofia "lean and mean" do PostgreSQL significa que eles não são e pode levar tempo para o novo usuário descobrir exatamente como aproveitá-los ao máximo.

    A pg_stat_statementsextensão, por exemplo, é amplamente utilizada e recomendada por todos os pesos-pesados ​​da comunidade PostgreSQL. BTW, "módulo de contribuição" e "extensão" são basicamente sinônimos . Observe, no entanto, que, embora todos os cms sejam extensões, nem todas as extensões são cms - longe disso. Por exemplo, embora nem TimescaleDB nem CitusData sejam cm's (ou seja, eles não são empacotados com o código-fonte), eles são extensões! Existe todo um ecossistema de extensão do PostgreSQL por aí, caso você esteja interessado.

    Perdoe o desvio, de volta ao ponto em questão!

    O módulo amcheck fornece funções que permitem verificar a consistência lógica da estrutura das relações.

    No PostgreSQL, uma relação é uma tabela ou um índice.

    O amcheck pode ser eficaz na detecção de vários tipos de modos de falha que as somas de verificação de dados não conseguirão detectar.

    Você pode visitar a página amcheck para obter mais detalhes sobre sua funcionalidade.

    pg_amcheck:

    O utilitário pg_amcheck pode ser encontrado no $PGHOME/bindiretório. Ele só será encontrado lá se o banco de dados for compilado usando make worldou equivalente. Ele pode ou não ser instalado em sua própria distribuição dependendo - posso confirmar que está incluído na distribuição Windows (14) do EnterpriseDB - não posso falar com outras distribuições no momento.

    Como mencionado acima, é um wrapper em torno da amcheckextensão:

    O pg_amcheck suporta a execução das funções de verificação de corrupção do amcheck em um ou mais bancos de dados, com opções para selecionar quais esquemas, tabelas e índices verificar, quais tipos de verificação executar e se as verificações devem ser executadas em paralelo e, em caso afirmativo, o número de conexões para estabelecer e usar.

    A extensão amcheck deve ser instalada para poder usar o wrapper (faz sentido!).

    Observe (da página):

    • Em geral, o amcheck só pode comprovar a presença de corrupção; não pode provar sua ausência.

    • (parafraseando) - amcheck só funciona em índices de árvore B.

    Este último é, (IMHO), uma lacuna grosseira.

    Caso de uso:

    Então, vamos dar uma olhada em um caso de uso prático para essas ferramentas.

    • Em 24/05/2022, Michael Paquier twittou sobre um problema com potencial corrupção usando o PostgreSQL 14

    • Em 2022-06-02 Um artigo no pganalyze.com mostra como usar o amcheck para confirmar o bug e ver se ele afetou seus sistemas

    Resumo:

    O ponto aqui é - eu acho - que nenhum sistema [é | pode ser | sempre será] perfeito e que ferramentas como essas [são | pode ser | pode ser] necessário de vez em quando nos casos em que pode haver problemas em potencial - é um pouco como o direito de autodefesa - você nunca quer ter que usá-lo, mas sabe que está lá caso o faça!

    NB PostgreSQL desde então fez um lançamento fora do ciclo em 2022-06-09 - o melhor de tudo isso é que tudo foi feito abertamente, em listas de discussão, para todos verem!

    • 2

relate perguntas

  • Instalando tabelas MySQL padrão no Windows (mysql_install_db)

  • Estou realizando uma autópsia em um banco de dados Oracle que travou seu host. Por onde devo começar?

  • Explicação do redimensionamento do descritor assíncrono

  • Como posso configurar o PostgreSQL 9.0 para iniciar automaticamente no Windows XP?

  • O Oracle pode ser instalado no Windows sem ser um administrador?

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