Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

954
Vistas
Postgresql pg_dump para la base de datos "página no válida en bloque" no funciona correctamente

Hemos configurado la base de datos postgresql 11 en un sistema. Hay unas 8 mesas. Desde hace unos días, nos enfrentamos a este problema.

 ERROR: invalid page in block 9698 of relation base/16385/16560 SQL state: XX001

Según mi investigación, deberíamos configurar set zero_damaged_pages=on; para solucionar este problema. Hemos establecido y ejecutado algunas consultas de selección que funcionan bien. Entonces decidimos hacer una copia de seguridad de esta base de datos a través de pg_dump. Este trabajo no se completó con éxito, pero copió todos los registros.

Ahora, en el nuevo sistema, importamos la copia de seguridad, nos hemos dado cuenta de que el esquema de la base de datos no se copia correctamente aquí debido a que se produjo la duplicación de datos. Repetimos esto con otra base de datos que estaba bien. Todo funciona bien, incluida la restauración.

Finalmente, concluyo que por error en un bloque de página no se realizó correctamente el respaldo de la base de datos. ¿Existe alguna opción como set zero_damaged_pages=on; en pg_dump para ignorar la página de error pero completar la parte posterior o cualquier otra solución.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Esta no es una solución para "arreglar" datos rotos , solo una forma de poder volcar lo que queda.

Y de ninguna manera soy un experto en postgres, pero creo que la pregunta es válida y merece al menos algún tipo de respuesta. Y dado que yo mismo lo usé para volcar datos de una base de datos que se ejecuta durante varias horas en una máquina con discos llenos y sin espacio disponible, sé que le permite realizar un volcado, siempre que comprenda que se pierden algunos datos :

  1. encuentre el nombre de la tabla a partir de la descripción del error; por ejemplo, en pg_dump: The command was: COPY foo.some_table (col1, col2, col3) TO stdout; es foo.some_table

  2. ejecute psql como pgadmin en la base de datos que estaba tratando de volcar (digamos que es my_cool_db ):

     $ sudo su - postgres psql my_cool_db
  3. "arreglar" páginas rotas:

     my_cool_db=# SET zero_damaged_pages = on; SET my_cool_db=# VACUUM FULL foo.some_table; WARNING: invalid page in block 54809 of relation base/48461770/48462009; zeroing out page WARNING: invalid page in block 54810 of relation base/48461770/48462009; zeroing out page ... VACUUM my_cool_db=# REINDEX TABLE foo.some_table;
  4. cerrar sesión en psql y cerrar sesión en pgadmin

  5. descargue su db (o repita para otras tablas rotas)

Fuente: https://lxadm.com/PostgreSQL:_ERROR:_invalid_page_header_in_block_13760_of_relation_base/16995/67484

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda