Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

943
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!