🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Reparar tabla MySQL corrupta en DirectAdmin

Actualizado el 16 de diciembre de 2025

Imagina que estás trabajando en tu sitio web y, de repente, te encuentras con un mensaje de error como “Table ‘nombre_tabla’ is marked as crashed” o “Repair not supported for InnoDB”. Es una situación frustrante, pero no te preocupes: es un problema común y, en la mayoría de los casos, tiene solución. En este artículo, te guiaré paso a paso para reparar una tabla MySQL corrupta en DirectAdmin, usando herramientas como phpMyAdmin y la línea de comandos. Hablaremos de qué significa la corrupción, por qué ocurre y cómo solucionarla de forma segura. Al final, tendrás un plan claro para recuperar tus datos.


¿Qué es una tabla corrupta y por qué ocurre?

Una tabla corrupta es aquella que ha sufrido daños en su estructura interna o en los datos almacenados. Esto puede manifestarse como errores al leer, escribir o consultar información. Las causas más comunes incluyen:

  • Apagados bruscos del servidor (cortes de luz, reinicios forzados).
  • Errores de disco duro (sectores defectuosos).
  • Problemas de memoria RAM.
  • Actualizaciones fallidas de MySQL/MariaDB.
  • Uso incorrecto de comandos como ALTER TABLE o OPTIMIZE TABLE.
  • Infecciones por malware (raro, pero posible).

[WARNING] No ignores una tabla corrupta. Si no la reparas, podrías perder datos importantes o incluso paralizar tu sitio web. Actúa rápido.


Primeros pasos: identificar la corrupción

Antes de reparar, debes confirmar que realmente hay una tabla dañada. DirectAdmin ofrece varias formas de hacerlo.

Usando phpMyAdmin (recomendado para principiantes)

  1. Accede a DirectAdmin: Inicia sesión en http://tudominio.com:2222.
  2. Ve a phpMyAdmin: En el panel principal, busca el ícono de phpMyAdmin (suele estar en la sección “MySQL Management” o “Base de datos”).
  3. Selecciona la base de datos afectada: En la columna izquierda, elige la base de datos donde está la tabla problemática.
  4. Ejecuta CHECK TABLE: En la pestaña “SQL”, escribe:
    CHECK TABLE nombre_de_la_tabla;
    
    Haz clic en “Continuar”. Si ves mensajes como “Table is marked as crashed and should be repaired”, estás ante una corrupción.

[INFO] Si no sabes el nombre exacto de la tabla, revisa los logs de errores de tu sitio web o aplicación. Por ejemplo, WordPress suele mostrar el nombre en el mensaje de error.

Usando la línea de comandos (para usuarios más avanzados)

Si tienes acceso SSH, puedes usar el cliente de MySQL directamente:

  1. Conéctate al servidor (vía SSH).
  2. Accede a MySQL:
    mysql -u usuario_bd -p
    
    Te pedirá la contraseña de la base de datos (no la de DirectAdmin).
  3. Selecciona la base de datos:
    USE nombre_base_datos;
    
  4. Ejecuta CHECK TABLE:
    CHECK TABLE nombre_tabla;
    

[TIP] Si no recuerdas las credenciales, en DirectAdmin ve a “MySQL Management” y haz clic en el ícono de la base de datos para ver usuario y contraseña.


Métodos para reparar una tabla MySQL corrupta

Una vez confirmada la corrupción, procede a reparar. Aquí tienes varios métodos, ordenados del más seguro al más técnico.

1. Reparar con phpMyAdmin (método más amigable)

  1. En phpMyAdmin, selecciona la base de datos y luego la tabla corrupta.
  2. Ve a la pestaña “Operaciones” (Operations).
  3. En la sección “Mantenimiento de tablas”, haz clic en “Reparar tabla”.
  4. phpMyAdmin ejecutará automáticamente el comando REPAIR TABLE. Verás un mensaje de éxito o error.

[WARNING] Este método solo funciona para tablas MyISAM. Si tu tabla es InnoDB, el botón “Reparar tabla” no aparecerá o dará error. Para InnoDB, usa el método de la línea de comandos con mysqldump.

2. Reparar desde la línea de comandos (método universal)

Funciona tanto para MyISAM como para InnoDB (con matices).

Para tablas MyISAM:

mysqlcheck -u usuario -p --repair nombre_base_datos nombre_tabla

O, si quieres reparar todas las tablas de una base de datos:

mysqlcheck -u usuario -p --repair nombre_base_datos

Para tablas InnoDB:

InnoDB es más robusto, pero a veces la corrupción es lógica. Prueba esto:

  1. Exporta la tabla (si es posible):
    mysqldump -u usuario -p nombre_base_datos nombre_tabla > respaldo.sql
    
  2. Elimina la tabla corrupta:
    DROP TABLE nombre_tabla;
    
  3. Importa el respaldo:
    mysql -u usuario -p nombre_base_datos < respaldo.sql
    

[INFO] Si no puedes exportar porque la tabla está muy dañada, prueba con --force en mysqldump o usa la opción --extended-insert para reducir el tamaño del archivo.

3. Forzar la reparación con myisamchk (solo MyISAM)

Este método es más directo y a veces resuelve casos difíciles.

  1. Detén MySQL (desde DirectAdmin: “Services” > “MySQL” > “Stop”).
  2. Ejecuta el comando:
    myisamchk --repair --force /ruta/completa/a/la/tabla.MYI
    
    La ruta típica es /home/usuario/domains/tudominio.com/mysql/nombre_base_datos/.
  3. Reinicia MySQL (desde DirectAdmin: “Services” > “MySQL” > “Start”).

[WARNING] Asegúrate de tener permisos de escritura en la carpeta de la base de datos. Si no, usa sudo o cambia el propietario con chown.

4. Reparar con mysqlcheck desde DirectAdmin (método integrado)

DirectAdmin tiene una herramienta interna. Ve a:

  • Admin Level (si eres administrador) > MySQL Management > Repair Databases.
  • Selecciona la base de datos y haz clic en “Repair”.

Esto ejecuta mysqlcheck --repair en todas las tablas de la base de datos seleccionada.


¿Qué hacer si la reparación falla?

A veces la corrupción es tan severa que los métodos anteriores no funcionan. No desesperes, aún hay opciones.

1. Recuperar datos con mysqldump y --force

Incluso si la tabla está corrupta, puedes intentar extraer los datos:

mysqldump -u usuario -p --force --all-databases > respaldo_completo.sql

Luego, crea una nueva base de datos e importa el respaldo. Si hay errores, omite las tablas problemáticas y luego intenta repararlas por separado.

2. Usar la herramienta mysqlfrm (para MyISAM)

Si el archivo .frm (definición de la tabla) está intacto pero los datos están corruptos, puedes regenerar la estructura:

mysqlfrm --diagnostic /ruta/a/la/tabla.frm

Esto te dará el comando CREATE TABLE. Luego, crea una tabla vacía y copia los datos desde un respaldo anterior.

3. Restaurar desde un respaldo

Si tienes un respaldo reciente (¡deberías!), restaura la base de datos completa desde phpMyAdmin o con mysql:

mysql -u usuario -p nombre_base_datos < respaldo.sql

[TIP] Configura respaldos automáticos en DirectAdmin: ve a “Admin Backup/Transfer” o usa plugins como “Backup Manager”. Programa respaldos diarios de tus bases de datos.


Prevención: cómo evitar la corrupción en el futuro

Más vale prevenir que curar. Sigue estas buenas prácticas:

Buenas prácticas con MySQL

  • Usa InnoDB en lugar de MyISAM siempre que sea posible. InnoDB es transaccional y resistente a corrupciones.
  • Ejecuta CHECK TABLE periódicamente (por ejemplo, una vez al mes) para detectar problemas temprano.
  • Mantén MySQL/MariaDB actualizado (DirectAdmin lo actualiza automáticamente si configuras las actualizaciones).
  • Evita apagar el servidor bruscamente. Usa comandos seguros como shutdown -h now.

Buenas prácticas de mantenimiento en DirectAdmin

  • Revisa los logs de errores: En DirectAdmin, ve a “Logs” > “Error Logs” para ver si hay mensajes de MySQL.
  • Optimiza tablas regularmente: Usa OPTIMIZE TABLE o el botón “Optimizar” en phpMyAdmin (solo para MyISAM).
  • Monitorea el espacio en disco: Si el disco está lleno, MySQL puede fallar. Ve a “Admin Level” > “Disk Usage”.

Buenas prácticas de respaldo

  • Respaldos automáticos: Configura respaldos diarios de las bases de datos en “Admin Backup/Transfer”.
  • Respaldos manuales: Antes de cualquier reparación, haz un respaldo manual con phpMyAdmin (Exportar > “SQL” > “Agregar DROP TABLE”).
  • Almacena respaldos fuera del servidor: Por ejemplo, en Google Drive o Dropbox.

Preguntas frecuentes (FAQ)

¿Puedo reparar una tabla InnoDB con REPAIR TABLE?

No, REPAIR TABLE solo funciona con MyISAM. Para InnoDB, debes usar mysqldump y luego recrear la tabla, como expliqué arriba.

¿Pierdo datos al reparar una tabla?

Depende del método. REPAIR TABLE intenta preservar los datos, pero si la corrupción es grave, podrías perder algunas filas. Siempre haz un respaldo antes.

¿Qué hago si no tengo acceso SSH?

Usa phpMyAdmin para MyISAM. Si es InnoDB, contacta a tu proveedor de hosting (si es compartido) o pide acceso SSH. En DirectAdmin, puedes solicitar a tu administrador que ejecute el comando.

¿Cómo sé si una tabla es MyISAM o InnoDB?

En phpMyAdmin, ve a la tabla y busca “Engine” en la pestaña “Structure”. También puedes ejecutar:

SHOW TABLE STATUS WHERE Name = 'nombre_tabla';

¿DirectAdmin tiene alguna herramienta integrada para reparar tablas?

Sí, en “Admin Level” > “MySQL Management” > “Repair Databases”. También puedes usar el script /usr/local/directadmin/scripts/mysql_repair.sh si tienes acceso SSH.

¿Qué es Syspanel y cómo se relaciona con esto?

Syspanel (antes conocido como HestiaCP) es un panel de control alternativo. Si tu servidor usa Syspanel, el puerto de acceso es el 2106 (ejemplo: http://tudominio.com:2106). Los pasos para reparar tablas son similares, pero la interfaz varía ligeramente.


Conclusión

Reparar una tabla MySQL corrupta en DirectAdmin no es tan complicado como parece. Con herramientas como phpMyAdmin, mysqlcheck y mysqldump, puedes recuperar tus datos en la mayoría de los casos. Recuerda siempre hacer un respaldo antes de cualquier reparación y, si falla todo, contacta a tu administrador o proveedor de hosting. La prevención (respaldos, actualizaciones, monitoreo) es tu mejor aliada para evitar futuros dolores de cabeza.

Si este artículo te ha sido útil, compártelo con otros usuarios de DirectAdmin. ¡Navegación segura y datos protegidos!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel