pg_verifybackup — verifica a integridade de uma cópia de segurança base de uma instância do PostgreSQL
pg_verifybackup [opçã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.
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.
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.
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.
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.
O utilitário pg_verifybackup aceita os seguintes argumentos de linha de comando:
-e--exit-on-errorTermina 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:
pplainA 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.
ttar
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=caminhoUsa o arquivo de manifesto no caminho especificado, em vez do localizado no diretório raiz da cópia de segurança.
-n--no-parse-walNão tenta analisar os dados de WAL que serão necessários para a restauração dessa cópia de segurança.
-P--progressAtiva 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--quietNão mostra nada quando a cópia de segurança for verificada com sucesso.
-s--skip-checksumsNã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--versionMostra a versão do pg_verifybackup, e termina.
-?--helpMostra a ajuda sobre os argumentos da linha de comando do utilitário pg_verifybackup, e termina.
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