Recuperación ante corrupción de datos
Un árbol de decisión paso a paso para la corrupción de datos (errores de checksum de bloque/página, tablas ilegibles, RDB/AOF corruptos): primero confirme el alcance de la corrupción y luego elija correctamente entre la recuperación a nivel de bloque, una restauración completa/PITR desde backup y las herramientas de reparación de último recurso.
¿Cuál es el alcance de la corrupción?
Primero ejecute una comprobación de integridad para determinar hasta dónde se ha extendido la corrupción. ¿Solo hay unos pocos bloques/páginas corruptos, está afectado un único objeto (tabla/índice) o la corrupción está generalizada? Analice con los comandos siguientes para determinar el alcance y luego elija la rama adecuada.
RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE; -- then: SELECT file#, block#, blocks, corruption_type FROM v$database_block_corruption;- Solo unos pocos bloques / páginas están corruptos
- Un único objeto (tabla/índice) está afectado
- La corrupción está generalizada / muchos objetos
- Las herramientas de comprobación no funcionan, la BD no abre
- La corrupción se repite (se sospecha de una causa raíz)
Causa raíz: corrupción limitada de bloques/páginas → recuperación dirigida
Si solo unos pocos bloques/páginas están corruptos, no hace falta restaurar toda la base de datos. Minimice la pérdida de datos reparando solo las partes corruptas desde backup/logs con la función de recuperación a nivel de bloque/página del motor.
Causa raíz: corrupción a nivel de objeto/generalizada → restauración completa o PITR desde backup
Si la corrupción se ha extendido a uno o más objetos, el camino más seguro es restaurar desde un backup bueno y, cuando sea posible, avanzar hasta el momento de la corrupción (PITR). Así se evita la pérdida de datos que causarían las herramientas de reparación.
Sin backup / la BD no abre: ¿pasar al último recurso?
Las herramientas de reparación (REPAIR_ALLOW_DATA_LOSS, innodb_force_recovery, --fix) PUEDEN CAUSAR PÉRDIDA DE DATOS y romper las restricciones de integridad. Son un último recurso solo cuando no existe un backup utilizable y la base de datos no se puede abrir. Primero asegúrese de que realmente no hay ningún backup utilizable.
- Encontré un backup bueno, voy a restaurar
- No hay ningún backup, una herramienta de reparación es la única opción
Último recurso: herramientas de reparación con riesgo de pérdida de datos
Estas herramientas descartan filas/páginas corruptas para que la base de datos se pueda abrir. Úselas solo si no hay backup y ha hecho antes una copia de los archivos existentes. Objetivo: abrirla lo justo para exportar los datos y luego moverlos a una copia limpia.
Causa raíz: hardware/infraestructura → corrija el origen y habilite los checksums
Si la corrupción se repite, la causa real es muy probablemente el disco, la controladora, la memoria (RAM) o una capa de almacenamiento inestable. Recuperar los datos no basta; si no corrige el origen, la corrupción volverá. Habilite también la verificación de checksum/integridad para la detección temprana.