Verificação de integridade do arquivo de dados do banco de dados PostgreSQL

12

Ao executar um sistema de banco de dados PostgreSQL, como sei se meu banco de dados como um todo tem 100% de integridade? Basicamente, como sei se meus arquivos e páginas de dados são 100% bons, sem corrupção?

No mundo do Microsoft SQL Server, existe um comando que você pode executar o DBCC CHECKDB que informa se há problemas. Aqui está um link se você estiver interessado em aprender mais sobre o comando. DBCC CHECKDB (Transact-SQL)

Sou uma pessoa com espírito de integridade paranóica (que qualquer pessoa que trabalhe com o banco de dados em uma função do tipo DBA) e esse tipo de coisa dificulta que durma bem à noite. Um utilitário como este é obrigatório! As pesquisas no google encontraram algumas tentativas de ferramentas como essa e, na minha opinião, a menos que seja uma ferramenta oficial aceita pelo projeto PostgreSQL, não confio nela para algo tão importante.

Aqui estão alguns links para pessoas que fazem perguntas semelhantes com o que não considero uma resposta definitiva real. E, na minha opinião, mostra que o PostgreSQL precisa ter algumas ferramentas que o Oracle e o Microsoft SQL Server parecem ter.

O primeiro link é o mais interessante que encontrei sobre esse assunto. Eu acho que um comentário no artigo que provavelmente resume: "O Postgres é bastante manco quando se trata de identificar a corrupção do banco de dados e repará-lo. A única maneira de detectá-lo é despejar o banco de dados ou selecionar * de cada tabela no banco de dados . "

Como o PostgreSQL protege contra gravações parciais de páginas e corrupção de dados

Verificando dados e corrupção de arquivos de índice - Dev Shed

Ajuda: minha mesa está corrompida!

PostgreSQL: Chave primária corrompida, tabela inconsistente

Acredito que há uma chance da 9.3 ter alguns recursos de verificação de corrupção. Parece que pode haver uma esperança de que os arquivos de página sejam somados, se assim o desejar. Portanto, as coisas estão melhorando se você considerar usar o ZFS e / ou uma versão futura do Postgres com soma de verificação de página. https://commitfest.postgresql.org/action/patch_view?id=759

ATUALIZAÇÃO: 14-JAN-2012 - Parece que o uso de um sistema de arquivos baseado no ZFS pode detectar corrupção, verificando a soma de cada bloco de dados. Vou ter que analisar isso mais a fundo e ver se isso é uma solução alternativa para permitir que se durma bem à noite, sabendo que os dados do banco de dados não estão silenciosamente corrompidos.

ATUALIZAÇÃO: 17-JAN-2012 - Como encontrar quais arquivos estão corrompidos com o ZFS. http://docs.oracle.com/cd/E18752_01/html/819-5461/gbbwl.html#gbcuz

ATUALIZAÇÃO: 14-APR-2014 9.3 obteve somas de verificação de dados. https://wiki.postgresql.org/wiki/What's_new_in_PostgreSQL_9.3

Kuberchaun
fonte
2
Por integridade eu quis dizer integridade dos arquivos de paginação e tal. O tipo de coisa que você só vê normalmente se escrever uma consulta que atinge uma página que está corrompida. Por exemplo, quando uma unidade de disco começa a falhar, alguns dados no prato podem começar a ficar ruins. Como você perceberia isso?
precisa saber é o seguinte

Respostas:

8

O PostgreSQL anterior à 9.3 não possuía somas de verificação de bloco. O recurso foi adicionado na 9.3 (muito tempo depois que esta pergunta foi publicada).

Para responder às suas necessidades, eu provavelmente desenvolveria minha própria soma de verificação (gatilhos?) - trabalhando em valores de atributos, não em páginas de dados.

filiprem
fonte
4
Pode valer a pena acrescentar que, desde o Postgres 9.3, você pode opcionalmente ativar as somas de verificação
a_horse_with_no_name