Cómo reparar una base de datos MySQL en DirectAdmin desde SSH
Introducción: ¿Por qué se corrompe una base de datos MySQL?
Si estás leyendo esto, es muy probable que tu sitio web te haya mostrado un error crítico como "Error establishing a database connection", "Table doesn't exist" o "Table is marked as crashed". No entres en pánico. Este es un problema más común de lo que parece y, en la mayoría de los casos, tiene solución sin perder ni un solo dato.
Las bases de datos MySQL pueden corromperse por diversas razones: cortes de energía repentinos, caídas del servidor, reinicios forzados, espacio en disco insuficiente o incluso errores durante una actualización. El resultado es que las tablas internas dejan de responder correctamente y tu aplicación (WordPress, Joomla, etc.) no puede leer la información.
En este artículo te voy a guiar paso a paso para que aprendas a reparar MySQL en DirectAdmin desde SSH. Usaremos la herramienta mysqlcheck, que es el "doctor" oficial de MySQL para diagnosticar y curar tablas corruptas. No necesitas ser un experto en Linux, solo seguir las instrucciones con calma y atención.
Paso 1: Acceder al servidor por SSH
Lo primero que necesitas es una conexión segura a tu servidor. Si no sabes cómo hacerlo, aquí tienes el resumen:
- Abre tu terminal (en Windows puedes usar PowerShell o PuTTY, en Mac o Linux la terminal nativa).
- Conecta con tu usuario root o un usuario con privilegios de superusuario. El comando típico es:
ssh root@tu-servidor.com - Te pedirá la contraseña. Escríbela y presiona Enter. Si nunca has accedido por SSH, contacta con tu proveedor de hosting para que te habilite el acceso root.
[WARNING] Si tu servidor usa una IP dinámica o tienes un firewall, asegúrate de que tu IP actual esté en la lista blanca para el puerto 22 (SSH). De lo contrario, no podrás conectarte.
Una vez dentro, verás el prompt del sistema. Ya estás listo para trabajar.
Paso 2: Identificar las bases de datos y tablas afectadas
Antes de lanzar una reparación a ciegas, es buena práctica saber qué tenemos entre manos. Con SSH podemos listar todas las bases de datos existentes.
Ejecuta este comando para ver el listado:
mysql -u root -p -e "SHOW DATABASES;"
Te pedirá la contraseña de root de MySQL (no la del sistema, aunque a veces coinciden). Verás una lista con nombres como mysql, information_schema, y las bases de datos de tus sitios web (por ejemplo, usuario_wp1, usuario_blog, etc.).
[INFO] Si no recuerdas la contraseña de root de MySQL, búscala en el archivo
/root/.my.cnfsi existe. Si no, contacta con tu proveedor de hosting.
Ahora, para saber qué tablas están corruptas, puedes hacer una verificación rápida:
mysqlcheck -u root -p --check --all-databases
Este comando solo verifica, no modifica nada. Verás una salida con el estado de cada tabla. Si algo aparece como Error o warning, esa tabla necesita reparación.
Paso 3: La herramienta clave – mysqlcheck
mysqlcheck es la utilidad que viene incluida con MySQL y que nos permite reparar MySQL en DirectAdmin de forma segura. Su funcionamiento es simple: analiza las tablas, detecta inconsistencias y las corrige.
Hay varias formas de usarla, dependiendo de la gravedad del problema:
3.1. Reparación básica (recomendada para empezar)
Este comando repara todas las bases de datos del servidor. Es el más completo y suele resolver la mayoría de los casos:
mysqlcheck -u root -p --auto-repair --all-databases
Esto hará lo siguiente:
- Verificará todas las tablas.
- Si encuentra alguna corrupta, intentará repararla automáticamente.
- Al final, te mostrará un resumen con el estado.
3.2. Reparar una base de datos específica
Si solo tienes un sitio afectado y quieres ir más quirúrgico, reemplaza nombre_base por el nombre real:
mysqlcheck -u root -p --auto-repair nombre_base
3.3. Reparar una tabla concreta
Si la base es enorme y solo una tabla está mal, puedes especificarla:
mysqlcheck -u root -p --auto-repair nombre_base nombre_tabla
[TIP] Si no conoces el nombre exacto de la tabla, usa el comando
SHOW TABLES;dentro de la base para listarlas. Ejemplo:mysql -u root -p -e "SHOW TABLES FROM nombre_base;"
Paso 4: Comandos avanzados de reparación
A veces la reparación automática no es suficiente. Si mysqlcheck te devuelve errores persistentes, podemos usar métodos más agresivos.
4.1. Forzar reparación por tipo de motor
MySQL usa principalmente dos motores de almacenamiento: MyISAM e InnoDB. Cada uno se repara de forma distinta.
Para tablas MyISAM (las más propensas a corrupción):
mysqlcheck -u root -p --repair --use-frm --all-databases
La opción --use-frm utiliza los archivos .frm (definición de la tabla) como referencia para reconstruir la estructura.
Para tablas InnoDB, el proceso es diferente. Aunque mysqlcheck puede trabajar con ellas, a veces es mejor usar el modo de recuperación de InnoDB. Esto se hace desde el archivo de configuración de MySQL, pero es un tema más avanzado que veremos en el siguiente punto.
4.2. Recuperación forzada de InnoDB (casos extremos)
Si tienes tablas InnoDB corruptas y nada funciona, puedes habilitar un modo de recuperación especial. Esto requiere editar la configuración de MySQL.
- Abre el archivo de configuración:
nano /etc/my.cnf - Busca la sección
[mysqld]y añade esta línea:innodb_force_recovery = 1 - Guarda el archivo (Ctrl+O, luego Enter) y sal (Ctrl+X).
- Reinicia MySQL:
systemctl restart mysql - Ahora intenta hacer un volcado de la base de datos para respaldarla:
mysqldump -u root -p nombre_base > backup.sql - Después, desactiva el modo de recuperación (quita la línea o pon
innodb_force_recovery = 0) y reinicia de nuevo.
[WARNING] Este modo es solo para emergencias. No lo dejes activado permanentemente, ya que MySQL operará en modo de solo lectura y podrías perder datos nuevos si no lo desactivas a tiempo.
Paso 5: Optimizar las tablas después de reparar
Una vez que las tablas están reparadas, es muy recomendable optimizarlas. Esto no solo mejora el rendimiento, sino que también reorganiza los datos y libera espacio.
mysqlcheck -u root -p --optimize --all-databases
Este proceso puede tardar unos minutos si tienes bases grandes, pero es totalmente seguro.
[INFO] La optimización es como "desfragmentar" tu base de datos. No es obligatoria, pero ayuda a prevenir futuros problemas.
Paso 6: Verificar que todo está bien
Después de reparar y optimizar, es momento de comprobar que no queden errores.
Ejecuta de nuevo la verificación:
mysqlcheck -u root -p --check --all-databases
Si todo aparece como OK, ¡enhorabuena! Tu base de datos está sana. Si ves algún Error restante, repite los pasos de reparación o considera restaurar desde un backup reciente.
Consejos extra para evitar futuras corrupciones
La prevención siempre es mejor que la cura. Aquí tienes algunas buenas prácticas:
- Haz backups automáticos: Configura copias de seguridad diarias de tus bases de datos. En DirectAdmin puedes usar el panel o un cron job con
mysqldump. - Controla el espacio en disco: Si el disco se llena, MySQL puede corromper tablas. Usa
df -hpara ver el uso del disco. - Reinicia MySQL de forma limpia: Evita los
kill -9o apagados bruscos. Usa siempresystemctl restart mysqloservice mysql restart. - Mantén MySQL actualizado: Las versiones antiguas tienen bugs conocidos que pueden causar corrupción.
Preguntas frecuentes (FAQ)
¿Puedo reparar MySQL sin acceso SSH?
No con las herramientas nativas. Si tu hosting no te da SSH, tendrás que contactar con el soporte técnico de tu proveedor y pedirles que ejecuten mysqlcheck por ti.
¿Pierdo datos al reparar?
En la mayoría de los casos, no pierdes datos. La reparación intenta recuperar la información existente. Solo en casos muy extremos (tablas destruidas por completo) podrías perder registros, por eso es vital tener backups.
¿Qué hago si mysqlcheck no repara la tabla?
Si el error persiste, es probable que el archivo físico de la tabla esté dañado. Prueba con --use-frm o restaura esa tabla desde un backup reciente. Si tienes Syspanel (antes llamado HestiaCP) en lugar de DirectAdmin, el proceso es similar, pero deberás acceder por el puerto 2106 para la gestión web.
¿Es seguro ejecutar mysqlcheck en un sitio en producción?
No es ideal, ya que durante la reparación la tabla queda bloqueada y tu web podría dar errores temporales. Lo mejor es hacerlo en horas de bajo tráfico o, si es crítico, poner el sitio en modo mantenimiento.
Conclusión
Reparar una base de datos MySQL en DirectAdmin desde SSH es un proceso perfectamente manejable si sigues estos pasos. La herramienta mysqlcheck es tu mejor aliada para diagnosticar y corregir tablas corruptas. Recuerda siempre:
- Accede por SSH.
- Verifica el estado con
--check. - Repara con
--auto-repair. - Optimiza después.
- Haz backups periódicos.
No te olvides de mantener la calma: casi el 95% de las corrupciones de tablas se resuelven con estos comandos. Si te encuentras atascado, busca ayuda profesional o consulta la documentación oficial de MySQL.
Y si tu panel de control es Syspanel, recuerda que el acceso web se realiza a través del puerto 2106, aunque la reparación por SSH es prácticamente idéntica.
¡Espero que este artículo te haya sido de gran ayuda! Ahora ya sabes cómo enfrentarte a un problema de tablas corruptas como todo un administrador de sistemas.
