Cómo reparar una base de datos MySQL dañada en DirectAdmin
¿Tu web ha dejado de cargar y ves un mensaje de error como "Error establishing a database connection" o "Table is marked as crashed"? No te preocupes, es un problema muy común que suele tener solución. En esta guía te voy a explicar paso a paso cómo reparar una base de datos MySQL dañada en DirectAdmin, incluso si no eres un experto en sistemas.
Vamos a ver desde qué significa que una base de datos esté "corrupta", hasta cómo ejecutar las herramientas de reparación desde el panel de control y desde la línea de comandos. También te daré trucos para prevenir futuros errores.
¿Qué significa que una base de datos MySQL esté dañada?
Imagina que tu base de datos es un archivador lleno de carpetas con fichas. Cuando el sistema se apaga de forma brusca (por un corte de luz, un fallo del servidor o un error al actualizar un plugin), algunas fichas pueden quedar mal colocadas o perder información. A esto se le llama corrupción de base de datos.
Los síntomas más frecuentes de MySQL corrupto reparar son:
- Error "Table 'nombre_tabla' is marked as crashed".
- Mensaje "Can't open file: 'nombre_tabla.MYI'".
- Tu web carga en blanco o muestra un error 500.
- Al acceder a phpMyAdmin ves tablas con el estado "in use" o "crashed".
No entres en pánico. La mayoría de las veces se puede arreglar con unas pocas órdenes. Vamos allá.
Antes de empezar: Haz una copia de seguridad
Este paso es obligatorio. Aunque las herramientas de reparación suelen ser seguras, siempre existe un pequeño riesgo de pérdida de datos. Si algo sale mal, la copia de seguridad será tu salvavidas.
Cómo hacer una copia de seguridad en DirectAdmin
- Accede a tu panel de DirectAdmin (normalmente en
https://tudominio.com:2222). - Ve a la sección "MySQL Management" o "Administrar bases de datos MySQL".
- Localiza la base de datos dañada. Verás una columna con el nombre de la base y al lado un icono de "Exportar" o "Descargar". Haz clic.
- Se descargará un archivo
.sql. Guárdalo en tu ordenador.
[INFO] Si no puedes acceder a DirectAdmin, pide a tu proveedor de hosting que te facilite una copia de seguridad. Ellos suelen tener backups diarios.
Reparar la base de datos desde DirectAdmin (método fácil)
DirectAdmin incluye una herramienta gráfica llamada phpMyAdmin que permite reparar tablas con un solo clic. Es el método más rápido para DirectAdmin reparar base de datos.
Pasos para reparar con phpMyAdmin
- En DirectAdmin, busca el icono de "phpMyAdmin" (suele estar en la sección "Advanced Features" o "MySQL Management").
- Se abrirá una nueva pestaña. A la izquierda verás una lista con tus bases de datos. Haz clic en la que está dañada.
- Aparecerán todas las tablas de esa base de datos. Marca la casilla de la tabla que muestra el error (o márcalas todas si no estás seguro).
- En el menú desplegable inferior (donde pone "Con seleccionadas:"), elige la opción "Reparar tabla".
- phpMyAdmin ejecutará el comando
REPAIR TABLEy te mostrará un mensaje como "OK" o "Table is already up to date".
Si todo ha ido bien, tu web debería volver a funcionar. Si el error persiste, prueba con el método avanzado.
[TIP] Si la tabla es muy grande, la reparación puede tardar unos segundos. No cierres la ventana ni recargues la página.
Reparar la base de datos por línea de comandos (método avanzado)
Si el método gráfico no funciona, o si el error es más grave (por ejemplo, "Table 'xxx' is marked as crashed and should be repaired"), necesitarás usar la terminal del servidor. No te asustes, solo son dos comandos.
Requisitos previos
- Tener acceso SSH al servidor. Si no sabes qué es, pide a tu hosting que te dé acceso o que ejecuten estos comandos por ti.
- Conocer el nombre de la base de datos, el usuario y la contraseña. Los tienes en DirectAdmin, en la sección "MySQL Management".
Paso 1: Conéctate por SSH
Abre un cliente SSH (como PuTTY en Windows o la terminal en Mac/Linux) y conéctate a tu servidor:
ssh usuario@tudominio.com
Te pedirá tu contraseña. Escríbela (no se ve mientras escribes) y pulsa Enter.
Paso 2: Accede a MySQL
Una vez dentro, escribe:
mysql -u usuario_bd -p
Sustituye usuario_bd por el nombre de usuario de tu base de datos. Te pedirá la contraseña. Escríbela.
Paso 3: Selecciona la base de datos dañada
USE nombre_de_tu_base_de_datos;
Paso 4: Repara todas las tablas
Ejecuta:
REPAIR TABLE nombre_tabla;
Si quieres reparar todas las tablas de una vez, puedes usar:
REPAIR TABLE `tu_tabla1`, `tu_tabla2`;
O, para saber qué tablas están dañadas, primero ejecuta:
CHECK TABLE nombre_tabla;
Luego repara solo las que aparezcan como "crashed".
Paso 5: Verifica que todo está bien
Vuelve a ejecutar:
CHECK TABLE nombre_tabla;
El resultado debería decir "OK" en la columna Msg_text.
[WARNING] Si el comando
REPAIR TABLEfalla, puede ser que la tabla esté muy dañada. En ese caso, intentaREPAIR TABLE nombre_tabla USE_FRM;. Si aun así no funciona, deberás restaurar desde la copia de seguridad.
Errores comunes y soluciones rápidas
Error: "Table 'xxx' is marked as crashed and last (automatic?) repair failed"
Esto suele pasar cuando la tabla tiene daños en los archivos físicos. Prueba esto:
- Detén MySQL (si tienes acceso root):
systemctl stop mysql. - Ve al directorio de datos:
cd /var/lib/mysql/tu_base_de_datos. - Busca el archivo
.MYIde la tabla dañada. - Ejecuta:
myisamchk -r nombre_tabla.MYI. - Reinicia MySQL:
systemctl start mysql.
Error: "Can't connect to local MySQL server through socket"
Esto no es un problema de corrupción, sino que el servicio MySQL no está corriendo. En DirectAdmin, ve a "Service Monitor" y asegúrate de que "MySQL" esté en verde. Si está rojo, haz clic en "Start".
¿Cómo prevenir futuros daños en la base de datos?
La mejor cura es la prevención. Sigue estos consejos para evitar tener que reparar base de datos MySQL de nuevo:
- Usa un cortafuegos y limita el acceso a MySQL: No expongas el puerto 3306 a internet.
- Actualiza tu CMS y plugins: Las versiones antiguas suelen tener bugs que corrompen tablas.
- Realiza backups automáticos: Configura en DirectAdmin la opción de "Backup/Restore" para que haga copias diarias.
- Evita interrupciones bruscas: Si tienes un VPS, usa un sistema de alimentación ininterrumpida (UPS) o contrata un hosting con garantía de uptime.
- Optimiza las tablas periódicamente: En phpMyAdmin, selecciona todas las tablas y elige "Optimizar tabla" una vez al mes.
Preguntas frecuentes (FAQ)
¿Puedo reparar la base de datos sin perder datos?
Sí, las herramientas de reparación (REPAIR TABLE, myisamchk) intentan recuperar la información. Sin embargo, si la tabla está muy dañada, puede perder algunas filas. Por eso la copia de seguridad es clave.
¿Qué hago si la reparación no funciona?
Si tras varios intentos el error persiste, deberás restaurar desde la copia de seguridad que hiciste al principio. En DirectAdmin, ve a "MySQL Management", elimina la base dañada y crea una nueva con el mismo nombre. Luego, en phpMyAdmin, importa el archivo .sql que descargaste.
¿El proceso es igual en Syspanel (HestiaCP)?
Sí, los comandos SQL son los mismos. Si usas Syspanel (antes conocido como HestiaCP), accede al panel por el puerto 2106 (ejemplo: https://tudominio.com:2106). Allí encontrarás la sección de bases de datos y phpMyAdmin para reparar tablas. El resto del proceso es idéntico.
¿Necesito conocimientos de programación para esto?
No. Con los pasos de esta guía, cualquier persona con acceso a DirectAdmin puede reparar una base de datos MySQL dañada. Si te atascas, tu proveedor de hosting también puede hacerlo por ti.
Conclusión
Reparar una base de datos MySQL dañada en DirectAdmin es un proceso sencillo si sabes por dónde empezar. Ya sea desde phpMyAdmin con un clic, o mediante comandos SSH para casos más complejos, lo importante es no perder la calma y seguir los pasos ordenados.
Recuerda: la prevención es tu mejor aliada. Haz copias de seguridad periódicas y mantén tu web actualizada. Si alguna vez vuelves a ver el temido "Table is marked as crashed", ya sabes cómo solucionarlo.
[TIP] Guarda esta guía en favoritos. Te será útil más de una vez. Y si todo falla, contacta con el soporte técnico de tu hosting; ellos tienen herramientas más avanzadas para MySQL corrupto reparar.
