Si la web se rompió justo después de un cambio de hosting o servidor, mira antes cómo recuperar una web tras una migración fallida. Esta guía es para cuando la base de datos falla sin que hayas movido nada.
No todo está perdido
Tu web da errores raros, faltan datos o directamente no conecta con la base de datos. Es un momento de pánico, pero casi siempre tiene solución si actúas bien.
Síntomas de base de datos corrupta
- Error "Error establishing database connection"
- Páginas que cargan parcialmente
- Datos que desaparecen
- Errores SQL en pantalla
Pasos de recuperación
1. No hagas cambios
Podrías empeorar la situación.
2. Intenta reparar desde phpMyAdmin
- Accede a phpMyAdmin
- Selecciona tu base de datos
- Marca todas las tablas
- Elige "Reparar tabla" en el desplegable
3. Usa WP-CLI si tienes acceso SSH
wp db repair
4. Restaura backup
Si tienes backup reciente, es la opción más segura.
Lo primero: copia antes de reparar
Esto es lo que más nos encontramos y lo que más caro sale. Las herramientas de reparación modifican la base de datos, y si van mal pueden dejarla peor de lo que estaba. Una reparación fallida sobre la única copia que tenías es cómo se pierden los datos de verdad.
Antes de ejecutar nada, saca un volcado del estado actual, aunque esté roto:
mysqldump -u USUARIO -p --single-transaction --quick BASE_DE_DATOS > copia-antes-de-reparar.sql
Si el volcado falla por la corrupción, cópiate directamente los ficheros de la carpeta de datos de MySQL con el servicio parado. Guárdalo aparte y no lo toques.
Averigua qué motor usan tus tablas
De esto depende todo lo demás, y casi ninguna guía lo menciona:
SELECT table_name, engine FROM information_schema.tables WHERE table_schema = 'TU_BASE_DE_DATOS';
- MyISAM sí se repara con
REPAIR TABLEy con la opción de reparar de phpMyAdmin. - InnoDB no. Y es el motor por defecto desde hace años, así que lo más probable es que sea el tuyo. En InnoDB,
REPAIR TABLEno hace nada útil y puede darte una falsa sensación de que ya está resuelto.
Si tus tablas son InnoDB
El camino es distinto. Se arranca MySQL en modo de recuperación forzada, se extraen los datos y se reconstruye la base:
- Añade
innodb_force_recovery = 1en la configuración de MySQL y reinicia el servicio. - Si arranca, haz el volcado inmediatamente. Ya tienes los datos a salvo.
- Si no arranca, sube el valor de uno en uno hasta 6. Aviso importante: a partir de 4 las operaciones pueden destruir datos de forma permanente. Sube solo lo justo para conseguir el volcado y ni un punto más.
- Con el volcado en la mano, crea una base de datos limpia, impórtalo, y quita luego
innodb_force_recoveryde la configuración.
Si es WordPress: la reparación integrada
WordPress trae una herramienta de reparación que viene desactivada de fábrica. Se activa añadiendo una línea a wp-config.php:
define( 'WP_ALLOW_REPAIR', true );
Después entra en tudominio.com/wp-admin/maint/repair.php. Ojo: esa página no pide contraseña mientras la constante esté activa, precisamente para que funcione cuando no puedes ni entrar al panel. Por eso hay que quitar la línea en cuanto termines, o dejas abierta una puerta a cualquiera.
Cuándo parar y pedir ayuda
Hay tres señales de que seguir tú por tu cuenta va a salir más caro que la factura de alguien que lo haga:
- El error menciona el tablespace o el fichero
ibdata1: eso es corrupción a nivel de motor, no de una tabla suelta. - MySQL no arranca ni con
innodb_force_recoverya 6. - No tienes ninguna copia de seguridad reciente. Aquí cada intento a ciegas reduce lo que se puede rescatar.
En esos tres casos, cuanto menos toques, más datos se recuperan. Si estás ahí, escríbenos a soporte urgente antes de probar nada más.
Prevención
- Backups diarios de la base de datos
- Optimización periódica
- Hosting con backups automáticos
¿No puedes recuperar tu base de datos? Contacta para asistencia urgente. Para evitar este tipo de sustos, nuestros planes de mantenimiento incluyen backups diarios automáticos.
Equipo Codanter
Desarrollo web, IA y automatización