pg_verifybackup

pg_verifybackup — verifica a integridade de uma cópia de segurança base de uma instância do PostgreSQL

Sinopse

pg_verifybackup [opção...]

Descrição

O utilitário pg_verifybackup é usado para verificar a integridade de uma cópia de segurança base de um agrupamento de bancos de dados (cluster), feita usando o utilitário pg_basebackup, tendo como base o arquivo backup_manifest criado pelo servidor no momento da geração da cópia de segurança. A cópia de segurança pode estar armazenada no formato plain (texto-puro) ou no formato tar; Isto inclui cópias de segurança em formato tar compactados com qualquer algoritmo com suporte pelo utilitário pg_basebackup. Entretanto, no momento, a verificação do WAL tem suporte apenas para cópias de segurança no formato texto-puro. Portanto, se a cópia de segurança estiver armazenado no formato tar, deverá ser usada a opção -n/--no-parse-wal.

É importante notar que a verificação realizada pelo utilitário pg_verifybackup não inclui, nem pode incluir, todas as verificações que serão feitas por um servidor que irá fazer uso dessa cópia de segurança. Mesmo se for usada esta ferramenta, ainda será necessário executar recuperações de teste e verificar se os bancos de dados resultantes funcionam conforme o esperado, e parecem conter os dados corretos. Entretanto, o pg_verifybackup pode detectar muitos problemas que geralmente ocorrem devido ao armazenamento ou erro do usuário.

A verificação da cópia de segurança ocorre em quatro etapas.

  1. O pg_verifybackup lê o arquivo backup_manifest. Se este arquivo não existir, não puder ser lido, estiver malformado, não tiver correspondência com o identificador do sistema no arquivo pg_control do diretório de cópia de segurança, ou falhar na verificação em relação à sua própria soma de verificação interna, o pg_verifybackup será encerrado com um erro fatal.

  2. O pg_verifybackup tenta verificar se os arquivos de dados atualmente armazenados no disco são exatamente iguais aos arquivos de dados que o servidor pretendia enviar, com algumas exceções descritas abaixo. São detectados arquivos extras e ausentes, com algumas exceções. Esta etapa ignora a presença ou ausência, ou quaisquer modificações, para os arquivos postgresql.auto.conf, standby.signal e recovery.signal, porque é esperado que estes arquivos possam ter sido criados ou modificados como parte do processo de fazer a cópia de segurança. Também não reclama sobre o arquivo backup_manifest no diretório de destino, ou sobre qualquer coisa dentro do diretório pg_wal, mesmo que estes arquivos não estejam listados no manifesto da cópia de segurança. Apenas os arquivos são verificados; a presença ou ausência de diretórios não é verificada, exceto indiretamente: se um diretório estiver ausente, todos os arquivos que este deveria conter também estarão necessariamente ausentes.

  3. O pg_verifybackup faz a soma de verificação de todos os arquivos, compara as somas de verificação com os valores presentes no manifesto, e emite erros para todos os arquivos nos quais a soma de verificação calculada não corresponde à soma de verificação presente no manifesto. Esta etapa não é realizada para os arquivos que produziram erros na etapa anterior, porque já se sabe que estes têm problemas. Os arquivos ignorados na etapa anterior também são ignorados nesta etapa.

  4. O pg_verifybackup usa o manifesto para verificar se os arquivos do WAL necessários para recuperar a cópia de segurança estão presentes, e se podem ser lidos e analisados. O arquivo backup_manifest contém informações sobre quais arquivos do WAL são necessários, e o pg_verifybackup usa estas informações para chamar o pg_waldump para analisar estes arquivos de WAL. É usado o sinalizador --quiet, de modo que o pg_waldump reporta apenas erros, sem produzir qualquer outra saída. Embora este nível de verificação seja suficiente para detectar problemas óbvios, como um arquivo ausente, ou cujas somas de verificação internas não correspondam, não são abrangentes o suficiente para detectar todos os problemas possíveis que podem ocorrer durante a tentativa de recuperação. Por exemplo, um erro do servidor que produz arquivos de WAL contendo somas de verificação corretas, mas especificando ações sem sentido, não pode ser detectado por este método.

Note que se estiverem presentes arquivos de WAL extras, que não são necessários para restaurar a cópia de segurança, eles não serão verificados por este utilitário, embora possa ser usada uma chamada em separado a pg_waldump para esta finalidade. Note, também, que a verificação do WAL é específica da versão: deve ser usada a versão do pg_verifybackup e, portanto, a versão do pg_waldump, que pertencem à cópia de segurança que está sendo verificada. Por outro lado, as verificações de integridade de arquivos de dados devem funcionar com qualquer versão do servidor que gere um arquivo backup_manifest.

Opções

O utilitário pg_verifybackup aceita os seguintes argumentos de linha de comando:

-e
--exit-on-error

Termina assim que for detectado um problema com a cópia de segurança. Se esta opção não for especificada, o pg_verifybackup continuará verificando a cópia de segurança mesmo após a detecção de um problema, e irá relatar todos os problemas detectados como erros.

-F formato
--format=formato

Especifica o formato da cópia de segurança. O formato pode ser um dos seguintes:

p
plain

A cópia de segurança consiste em arquivos de texto-puro com a mesma disposição do diretório de dados e dos espaços de tabelas do servidor de origem.

t
tar

A cópia de segurança consiste em arquivos tar, que podem estar comprimidos Uma cópia de segurança válida inclui o diretório de dados principal em um arquivo chamado base.tar, os arquivos do WAL no arquivo pg_wal.tar, e arquivos tar separados para cada espaço de tabelas, com nomes de acordo com o OID do espaço de tabelas. Se a cópia de segurança estiver comprimida, será adicionado o sufixo correspondente ao tipo de compressão ao final de cada nome de arquivo.

-i caminho
--ignore=caminho

Ignora o arquivo ou diretório especificado, que deve ser expresso como um nome de caminho relativo, ao comparar a lista de arquivos de dados presentes na cópia de segurança com aqueles listados no arquivo backup_manifest. Se for especificado um diretório, esta opção afetará toda a subárvore com raiz neste local. Reclamações sobre arquivos extras, arquivos ausentes, diferenças de tamanho de arquivo ou incompatibilidades de soma de verificação serão suprimidas, se o nome do caminho relativo corresponder ao nome de caminho especificado. Esta opção pode ser especificada várias vezes.

-m caminho
--manifest-path=caminho

Usa o arquivo de manifesto no caminho especificado, em vez do localizado no diretório raiz da cópia de segurança.

-n
--no-parse-wal

Não tenta analisar os dados de WAL que serão necessários para a restauração dessa cópia de segurança.

-P
--progress

Ativa o relatório de progresso. Ao especificar esta opção, será mostrado o relatório de progresso enquanto as somas de verificação são conferidas.

Esta opção não pode ser usada em conjunto com a opção --quiet.

-q
--quiet

Não mostra nada quando a cópia de segurança for verificada com sucesso.

-s
--skip-checksums

Não verifica as somas de verificação dos arquivos de dados. A presença ou ausência de arquivos, e os tamanhos desses arquivos, ainda serão verificados. É muito mais rápido, porque os arquivos não precisam ser lidos.

-w caminho
--wal-directory=caminho

Tenta analisar os arquivos de WAL armazenados no diretório especificado, em vez de pg_wal. Pode ser usado se a cópia de segurança for armazenada em um local diferente dos arquivos de WAL.

Também estão disponíveis outras opções:

-V
--version

Mostra a versão do pg_verifybackup, e termina.

-?
--help

Mostra a ajuda sobre os argumentos da linha de comando do utilitário pg_verifybackup, e termina.

Exemplos

Para criar uma cópia de segurança base do servidor em mydbserver, e verificar a integridade da cópia de segurança:

$ pg_basebackup \
-h mydbserver \
-D /usr/local/pgsql/data
$ pg_verifybackup /usr/local/pgsql/data

Para criar uma cópia de segurança base do servidor em mydbserver, mover o arquivo de manifesto para um lugar fora do diretório da cópia de segurança, e verificar a cópia de segurança:

$ pg_basebackup \
-h mydbserver \
-D /usr/local/pgsql/backup1234
$ mv \
/usr/local/pgsql/backup1234/backup_manifest \
/my/secure/location/backup_manifest.1234
$ pg_verifybackup \
-m /my/secure/location/backup_manifest.1234 \
/usr/local/pgsql/backup1234

Para verificar a cópia de segurança ignorando um arquivo que foi adicionado manualmente ao diretório da cópia de segurança, e também ignorando a verificação da soma de verificação:

$ pg_basebackup \
-h mydbserver \
-D /usr/local/pgsql/data
$ edit /usr/local/pgsql/data/note.to.self
$ pg_verifybackup \
--ignore=note.to.self \
--skip-checksums /usr/local/pgsql/data

Veja também

pg_basebackup