Guía para reparar tablas corruptas en DirectAdmin
¿Tu web se ha vuelto lenta, muestra errores raros como "Table is marked as crashed" o directamente no carga? No te asustes. Esto suele ser una señal de que una o varias tablas de tu base de datos MySQL o MariaDB se han corrompido. Es un problema más común de lo que parece, especialmente en sitios con mucho tráfico o después de cortes de energía.
En esta guía, te explicaré paso a paso cómo reparar tablas corruptas en DirectAdmin usando diferentes métodos. No necesitas ser un experto en servidores, solo seguir las instrucciones con calma. Vamos a ello.
¿Por qué se corrompen las tablas?
Antes de solucionarlo, es bueno entender por qué pasa. Las causas más frecuentes son:
- Cortes de energía o apagones inesperados: El servidor se apaga mientras se está escribiendo en la base de datos.
- Bloqueos del servidor: Un proceso se cuelga y la tabla queda en un estado inconsistente.
- Errores de hardware: Discos duros con sectores defectuosos.
- Versiones incompatibles: Migrar o importar bases de datos entre versiones muy diferentes de MySQL o MariaDB.
- Uso de plugins o temas de WordPress defectuosos: A veces, un mal código puede forzar la estructura de las tablas.
El síntoma más claro es el error: "Table 'nombre_de_tabla' is marked as crashed and should be repaired".
Método 1: Reparar desde phpMyAdmin (El más fácil)
Esta es la opción más amigable para usuarios sin experiencia en línea de comandos. Lo haremos todo desde el panel de control.
Paso 1: Accede a phpMyAdmin
- Ingresa a tu panel de DirectAdmin.
- Busca y haz clic en el icono de phpMyAdmin (suele estar en la sección "Account Manager" o "Advanced Features"). Si no lo ves, puede que esté dentro de "Extra Features".
- Se abrirá una nueva pestaña. A la izquierda verás una lista de tus bases de datos. Haz clic en el nombre de la base de datos que tiene el problema.
Paso 2: Identifica y selecciona las tablas corruptas
A la derecha, verás todas las tablas de esa base de datos. Fíjate en la columna "Estado" (Status). Las tablas corruptas suelen mostrar un estado como "crashed" o "in use".
- Marca la casilla de verificación de la tabla o tablas que quieras reparar.
- En la parte inferior, hay un desplegable que dice "Con seleccionado:". Haz clic y elige la opción "Reparar tabla" (Repair table).
Paso 3: Ejecuta la reparación
phpMyAdmin ejecutará el comando REPAIR TABLE. Verás un mensaje como "La tabla ha sido reparada" o "OK". Si todo sale bien, el estado de la tabla cambiará a "ok".
[TIP] Si no ves la opción "Reparar tabla", puede que tu usuario de MySQL no tenga permisos para hacerlo. En ese caso, prueba con el Método 2 o 3.
Método 2: Reparar desde la Línea de Comandos (SSH)
Si te sientes más cómodo con la terminal, este método es más rápido y potente. Necesitarás acceso SSH a tu servidor.
Paso 1: Conéctate por SSH
Usa un cliente como PuTTY (Windows) o la terminal (Mac/Linux) y conéctate a tu servidor con tu usuario root o un usuario con privilegios sudo.
Paso 2: Encuentra el nombre de tu base de datos y usuario
Puedes ver esto desde DirectAdmin en la sección "MySQL Management". Ahí verás el nombre de la base de datos y el usuario asociado.
Paso 3: Ejecuta el comando de reparación
El comando mágico es mysqlcheck. Vamos a usarlo para reparar todas las tablas de una base de datos específica.
Escribe este comando y pulsa Enter:
mysqlcheck -u TU_USUARIO -p --auto-repair NOMBRE_DE_TU_BASE_DE_DATOS
-u TU_USUARIO: Reemplázalo con tu nombre de usuario de MySQL.-p: Le dice al comando que te pedirá la contraseña. La escribirás después.--auto-repair: Esta opción repara automáticamente las tablas que encuentre corruptas.NOMBRE_DE_TU_BASE_DE_DATOS: Pon el nombre exacto de tu base de datos.
[INFO] Te pedirá la contraseña. Escríbela y pulsa Enter. No verás los caracteres mientras escribes, es normal.
Ejemplo práctico:
Si tu usuario es miusuario y la base de datos se llama midatabase, el comando sería:
mysqlcheck -u miusuario -p --auto-repair midatabase
Paso 4: Verifica el resultado
El comando te mostrará el estado de cada tabla. Verás mensajes como OK (tabla correcta) o warning : Table is marked as crashed seguido de Repairing table. Al final, si todo sale bien, verás que todas las tablas están en estado OK.
[WARNING] Si el comando falla o te da un error de permisos, significa que tu usuario de MySQL no tiene permisos para reparar. En ese caso, usa el usuario root de MySQL. Para ello, necesitas la contraseña root de MySQL (no la de tu panel de control). El comando sería:
mysqlcheck -u root -p --auto-repair midatabase
Método 3: Reparar una tabla específica desde MySQL (Modo manual)
Si solo una tabla está dando problemas y los métodos anteriores no funcionan, podemos entrar directamente a la consola de MySQL.
Paso 1: Accede a la consola de MySQL
Conéctate por SSH y escribe:
mysql -u TU_USUARIO -p
Te pedirá la contraseña. Una vez dentro, verás un prompt como mysql>.
Paso 2: Selecciona la base de datos
Usa el comando USE para elegir la base de datos correcta:
USE NOMBRE_DE_TU_BASE_DE_DATOS;
Paso 3: Repara la tabla
Ahora ejecuta el comando REPAIR TABLE seguido del nombre de la tabla problemática:
REPAIR TABLE nombre_de_la_tabla_corrupta;
Por ejemplo, si la tabla se llama wp_options:
REPAIR TABLE wp_options;
Paso 4: Sal de la consola
Verás un mensaje de confirmación. Luego escribe exit; para salir de MySQL.
Método 4: Reparar usando la herramienta de DirectAdmin (Panel)
DirectAdmin tiene una herramienta interna para gestionar bases de datos que también puede ayudar.
- Ve a DirectAdmin > Account Manager > MySQL Management.
- Verás una lista de tus bases de datos. Al lado de cada una, suele haber un botón o enlace que dice "Repair" o "Check".
- Haz clic en ese botón. El sistema ejecutará un chequeo y, si encuentra errores, intentará repararlos automáticamente.
[TIP] Esta opción no siempre está disponible en todas las configuraciones de DirectAdmin. Si no la ves, usa phpMyAdmin o SSH.
¿Qué hago si la reparación falla?
Si has intentado todo y la tabla sigue corrupta, no te desesperes. Aún tienes opciones:
- Restaurar desde un backup: Esta es la solución más segura. Si tienes una copia de seguridad de tu base de datos (deberías tenerla), restáurala desde phpMyAdmin o desde la línea de comandos.
- Usar
mysqlcheckcon más opciones: Prueba con--all-databasespara reparar todas las bases de datos del servidor (solo si eres root).mysqlcheck -u root -p --auto-repair --all-databases - Forzar la reparación (riesgoso): Si la tabla es muy importante y el backup es muy antiguo, puedes intentar forzar la reparación con el comando
REPAIR TABLE nombre_tabla USE_FRM;. Esto intenta reconstruir la estructura de la tabla usando el archivo.frm. Haz esto solo si sabes lo que haces, ya que puedes perder datos. - Contactar al soporte del hosting: Si no te sientes seguro o el problema persiste, abre un ticket de soporte. Ellos tienen herramientas más avanzadas y pueden ayudarte sin riesgos.
Preguntas Frecuentes (FAQ)
¿Cada cuánto debo revisar mis tablas?
No es necesario hacerlo a diario. Una buena práctica es ejecutar un chequeo mensual. Puedes programar un cron job con el comando mysqlcheck para que lo haga automáticamente.
¿Reparar una tabla borra datos?
No. El comando REPAIR TABLE solo intenta arreglar la estructura y los índices de la tabla, no borra filas de datos. Sin embargo, si la corrupción es muy grave, es posible que se pierdan algunos datos que estaban en un estado inconsistente. Por eso el backup es tan importante.
¿Puedo prevenir la corrupción de tablas?
Sí, en gran medida:
- Usa un sistema de archivos robusto (como ext4 o ZFS).
- Instala un SAI (UPS) para el servidor, para evitar cortes de energía.
- Mantén actualizados MySQL/MariaDB y el sistema operativo.
- Realiza backups regulares de tus bases de datos. Es tu red de seguridad.
¿Es lo mismo MySQL que MariaDB?
Para el usuario final, sí. MariaDB es un fork de MySQL y es compatible al 100% con los comandos que hemos visto. Si tu servidor usa MariaDB, todos estos métodos funcionan exactamente igual.
Mi web usa Syspanel (HestiaCP), ¿esto aplica?
Si estás usando Syspanel (el nombre que le damos a HestiaCP), el proceso es muy similar. El acceso a phpMyAdmin suele estar en http://TU_IP:2106/phpmyadmin o dentro del panel de Syspanel en la sección de bases de datos. Los comandos SSH son idénticos. La única diferencia es que la gestión de usuarios y bases de datos se hace desde la interfaz de Syspanel, no desde DirectAdmin. Si tienes dudas, revisa la documentación de Syspanel o abre un ticket de soporte.
Resumen rápido
- Síntoma: Error "table is marked as crashed".
- Solución fácil: phpMyAdmin > Seleccionar tabla > "Reparar tabla".
- Solución rápida (SSH):
mysqlcheck -u usuario -p --auto-repair basededatos. - Solución manual:
mysql>USE basededatos;>REPAIR TABLE tabla;. - Plan B: Restaurar desde un backup.
- Prevención: Backups regulares y mantener el servidor estable.
¡Y eso es todo! Con esta guía ya tienes las herramientas para enfrentarte a tablas corruptas en DirectAdmin sin perder la calma. Recuerda siempre tener una copia de seguridad a mano. ¡Buena suerte!
