procesos - select en postgresql
error de postgresql PÁNICO: no se pudo ubicar un registro de punto de control válido (5)
Cuando cargo el servidor de Postgres (v9.0.1) me da un ataque de pánico que impide que se inicie:
PÁNICO: no se pudo ubicar un registro de punto de control válido
¿Cómo puedo arreglar esto?
¿Haces archiving continuo? Si está realizando una copia de seguridad en ese momento, puede ser más prudente eliminar la etiqueta de copia de seguridad. pg_resetxlog
es algo grave.
Como se indica aquí, pg_resetxlog no se debe ejecutar. Las respuestas que se refieren a esto son malos consejos. Suponiendo que se produjo el error en un contexto de copia / instancia de replicación, el enlace proporciona una forma más sucinta de copiar / replicar con pg_basebackup
Está buscando un registro de punto de control en el registro de transacciones que probablemente no exista o esté dañado. Puede determinar si este es el caso ejecutando:
# Postgres < 10.0
pg_resetxlog DATADIR
# Postgres >= 10.0
pg_resetwal DATADIR
Si el registro de transacciones está dañado, verá un mensaje como:
El servidor de la base de datos no se cerró limpiamente. Restablecer el registro de transacciones puede causar la pérdida de datos. Si desea continuar de todos modos, use -f para forzar el restablecimiento.
A continuación, puede seguir las instrucciones y ejecutar con -f
para forzar la actualización:
# Postgres < 10.0
pg_resetxlog -f DATADIR
# Postgres >= 10.0
pg_resetwal -f DATADIR
Eso debería restablecer el registro de transacciones, sin embargo, podría dejar su base de datos en un estado indeterminado como se explica en la documentación de PostgreSQL en pg_resetxlog
:
Si pg_resetxlog se queja de que no puede determinar datos válidos para pg_control, puede forzarlo a proceder de todos modos especificando el
-f
(forzar). En este caso, los valores plausibles serán sustituidos por los datos faltantes. Se puede esperar que la mayoría de los campos coincidan, pero es posible que se necesite asistencia manual para el próximo OID, la próxima identificación de transacción y la época, la próxima identificación y compensación de multitransacción, y los campos de dirección inicial de WAL. Estos campos se pueden configurar mediante los interruptores que se describen a continuación. Si no puede determinar los valores correctos para todos estos campos,-f
aún se puede usar, pero la base de datos recuperada debe tratarse con más sospechas de lo habitual: es imperativo un volcado inmediato y una recarga. No ejecute ninguna operación de modificación de datos en la base de datos antes de volcar, ya que cualquier acción de este tipo empeora la corrupción.
Estoy ejecutando 9.1.7 y me encontré con la siguiente exitosamente:
/usr/lib/postgresql/9.1/bin/pg_resetxlog -f /var/lib/postgresql/9.1/main
Su argumento final para el comando pg_resetxlog
debe ser la ubicación en el disco donde postgres almacena los datos de su base de datos.
al igual que el registro que dice: no se pudo ubicar un registro de punto de control válido. Postgres no puede encontrar un WAL correctamente bajo el directorio $ PGDATA / pg_xlog /. Intenta usar pg_resetxlog