pg_verifybackup

pg_verifybackup — verifica la integridad de una copia de seguridad base de un clúster de PostgreSQL

Synopsis

pg_verifybackup [option...]

Descripción

pg_verifybackup se utiliza para comprobar la integridad de una copia de seguridad de un clúster de bases de datos realizada con pg_basebackup frente a un archivo backup_manifest generado por el servidor en el momento de la copia de seguridad. La copia de seguridad se puede almacenar en formato «plain» (texto plano/directorio) o «tar»; esto incluye las copias de seguridad en formato tar comprimidas con cualquier algoritmo admitido por pg_basebackup. Sin embargo, en la actualidad, la verificación de WAL solo se admite para copias de seguridad en formato plain. Por lo tanto, si la copia de seguridad se almacena en formato tar, se debe usar la opción -n, --no-parse-wal.

Es importante tener en cuenta que la validación realizada por pg_verifybackup no incluye ni puede incluir todas las comprobaciones que realizará un servidor en ejecución al intentar utilizar la copia de seguridad. Incluso si utilizas esta herramienta, deberías realizar restauraciones de prueba y verificar que las bases de datos resultantes funcionen como se espera y que parezcan contener los datos correctos. Sin embargo, pg_verifybackup puede detectar muchos problemas que ocurren comúnmente debido a problemas de almacenamiento o errores del usuario.

La verificación de la copia de seguridad se realiza en cuatro etapas. En primer lugar, pg_verifybackup lee el archivo backup_manifest. Si ese archivo no existe, no se puede leer, está mal formado, no coincide con el identificador del sistema con pg_control del directorio de copia de seguridad o no supera la verificación frente a su propia suma de comprobación interna, pg_verifybackup terminará con un error fatal.

En segundo lugar, pg_verifybackup intentará verificar que los archivos de datos almacenados actualmente en el disco sean exactamente los mismos que el servidor pretendía enviar, con algunas excepciones que se describen a continuación. Se detectarán archivos adicionales y faltantes, con algunas excepciones. Este paso ignorará la presencia o ausencia de, o cualquier modificación en, postgresql.auto.conf, standby.signal y recovery.signal, porque se espera que estos archivos se hayan creado o modificado como parte del proceso de realización de la copia de seguridad. Tampoco se quejará de un archivo backup_manifest en el directorio de destino o de cualquier cosa dentro de pg_wal, a pesar de que estos archivos no aparecerán listados en el manifiesto de la copia de seguridad. Solo se comprueban los archivos; no se verifica la presencia o ausencia de directorios, excepto indirectamente: si falta un directorio, cualquier archivo que debería haber contenido también faltará necesariamente.

A continuación, pg_verifybackup calculará la suma de comprobación de todos los archivos, comparará las sumas de comprobación con los valores del manifiesto y emitirá errores para cualquier archivo cuya suma de comprobación calculada no coincida con la almacenada en el manifiesto. Este paso no se realiza para ningún archivo que haya producido errores en el paso anterior, ya que ya se sabe que tienen problemas. Los archivos que fueron ignorados en el paso anterior también se ignoran en este paso.

Finalmente, pg_verifybackup utilizará el manifiesto para verificar que los registros de escritura anticipada necesarios para recuperar la copia de seguridad estén presentes y que se puedan leer y analizar. El backup_manifest contiene información sobre qué registros de escritura anticipada serán necesarios, y pg_verifybackup utilizará esa información para invocar a pg_waldump para analizar dichos registros. Se utilizará la opción --quiet, de modo que pg_waldump solo informará errores, sin generar ninguna otra salida. Aunque este nivel de verificación es suficiente para detectar problemas obvios, como la falta de un archivo o uno cuyas sumas de comprobación internas no coincidan, no es lo suficientemente amplio como para detectar todos los posibles problemas que podrían ocurrir al intentar la recuperación. Por ejemplo, un fallo del servidor que produzca registros de escritura anticipada con sumas de comprobación correctas pero que especifiquen acciones sin sentido no se puede detectar con este método.

Ten en cuenta que si hay archivos WAL adicionales que no son necesarios para recuperar la copia de seguridad, no serán comprobados por esta herramienta, aunque se podría utilizar una invocación independiente de pg_waldump para ese propósito. También ten en cuenta que la verificación de WAL es específica de cada versión: debes utilizar la versión de pg_verifybackup y, por tanto, de pg_waldump, que corresponda a la copia de seguridad que se está comprobando. En cambio, las comprobaciones de integridad de los archivos de datos deberían funcionar con cualquier versión del servidor que genere un archivo backup_manifest.

Opciones

pg_verifybackup acepta los siguientes argumentos de línea de comandos:

-e
--exit-on-error

Termina tan pronto como se detecte un problema con la copia de seguridad. Si no se especifica esta opción, pg_verifybackup continuará comprobando la copia de seguridad incluso después de haber detectado un problema, e informará de todos los problemas detectados como errores.

-F format
--format=format

Especifica el formato de la copia de seguridad. El format puede ser uno de los siguientes:

p
plain

La copia de seguridad consiste en archivos planos con la misma distribución que el directorio de datos y los tablespaces del servidor de origen.

t
tar

La copia de seguridad consiste en archivos tar, que pueden estar comprimidos. Una copia de seguridad válida incluye el directorio de datos principal en un archivo llamado base.tar, los archivos WAL en pg_wal.tar y archivos tar independientes para cada tablespace, nombrados según el OID del tablespace. Si la copia de seguridad está comprimida, se añade la extensión de compresión correspondiente al final de cada nombre de archivo.

-i path
--ignore=path

Ignora el archivo o directorio especificado, que debe expresarse como una ruta relativa, al comparar la lista de archivos de datos realmente presentes en la copia de seguridad con los enumerados en el archivo backup_manifest. Si se especifica un directorio, esta opción afecta a todo el subárbol con raíz en esa ubicación. Las quejas sobre archivos adicionales, archivos faltantes, diferencias de tamaño de archivos o discrepancias de suma de comprobación se suprimirán si la ruta relativa coincide con la ruta especificada. Esta opción se puede especificar varias veces.

-m path
--manifest-path=path

Utiliza el archivo de manifiesto en la ruta especificada, en lugar del ubicado en la raíz del directorio de copia de seguridad.

-n
--no-parse-wal

No intenta analizar los datos del registro de escritura anticipada que serán necesarios para recuperarse de esta copia de seguridad.

-P
--progress

Habilita el reporte de progreso. Activar esto ofrecerá un informe de progreso mientras se verifican las sumas de comprobación.

Esta opción no se puede utilizar junto con la opción --quiet.

-q
--quiet

No imprime nada cuando una copia de seguridad se verifica correctamente.

-s
--skip-checksums

No verifica las sumas de comprobación de los archivos de datos. Aún así se comprobará la presencia o ausencia de archivos y el tamaño de los mismos. Esto es mucho más rápido, porque no es necesario leer los archivos en sí.

-w path
--wal-directory=path

Intenta analizar los archivos WAL almacenados en el directorio especificado, en lugar de en pg_wal. Esto puede ser útil si la copia de seguridad se almacena en una ubicación independiente del archivo WAL.

También están disponibles otras opciones:

-V
--version

Muestra la versión de pg_verifybackup y termina.

-?
--help

Muestra la ayuda sobre los argumentos de línea de comandos de pg_verifybackup y termina.

Ejemplos

Para crear una copia de seguridad base del servidor en mydbserver y verificar la integridad de la copia de seguridad:

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

Para crear una copia de seguridad base del servidor en mydbserver, mover el manifiesto a algún lugar fuera del directorio de copia de seguridad y verificar la copia de seguridad:

$ 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 copia de seguridad ignorando un archivo que se agregó manualmente al directorio de copia de seguridad, y omitiendo también la verificación de la suma de comprobación:

$ 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

Véase también

pg_basebackup