Cómo reparar una base de datos MySQL en Plesk usando comandos
¿Por qué se corrompe una base de datos MySQL?
Antes de lanzarnos a ejecutar comandos, es importante que entiendas qué está pasando. Una base de datos MySQL puede corromperse por varias razones: cortes de energía, caídas del servidor, discos llenos, errores de hardware o incluso por algún plugin de WordPress que hizo un "commit" a medias.
Cuando esto ocurre, es habitual ver errores como "Table './basededatos/tabla' is marked as crashed and should be repaired" o "Can't open file: 'wp_options.MYI'". Esto significa que las tablas internas de MySQL (las que guardan la información) tienen inconsistencias internas.
La buena noticia es que, en la mayoría de los casos, la corrupción es menor y se puede reparar con las herramientas que ya vienen instaladas en tu servidor Plesk. No necesitas ser un gurú de la terminal, solo seguir estos pasos con calma.
Preparación: Acceso SSH y localización de la base de datos
Para reparar una base de datos MySQL en Plesk usando comandos, lo primero que necesitas es acceso SSH a tu servidor. Si estás en un plan de hosting compartido, quizá no tengas acceso root, pero normalmente sí puedes usar comandos de MySQL a nivel de usuario.
Cómo conectarte por SSH
- Abre tu terminal (en macOS/Linux) o usa PuTTY en Windows.
- Conéctate con:
ssh usuario@tu-servidor.com - Si es la primera vez, te pedirá aceptar la huella del servidor.
Una vez dentro, necesitarás saber el nombre de tu base de datos y el usuario. Esta información la tienes en Plesk en: Bases de datos → selecciona la BD problemática.
[TIP]
Si no recuerdas tus credenciales de MySQL, en Plesk puedes ir a "Bases de datos" → clic en la BD → "Cambiar" para ver o restablecer la contraseña del usuario.
Identificar el motor de almacenamiento
MySQL usa principalmente dos motores: MyISAM e InnoDB. La reparación es diferente para cada uno. Para saber cuál usas, ejecuta:
SHOW TABLE STATUS FROM nombre_base_datos;
O más directo, desde la terminal:
mysql -u usuario -p -e "SHOW TABLE STATUS FROM nombre_base_datos\G" | grep Engine
Si ves que la mayoría son MyISAM, usaremos myisamchk. Si son InnoDB, usaremos mysqlcheck o comandos de ALTER TABLE.
Método 1: Reparar con mysqlcheck (el más común)
mysqlcheck es la herramienta oficial de MySQL para revisar, reparar y optimizar tablas. Es la más segura y la que recomendamos primero.
Paso 1: Revisar todas las tablas
Primero, haz un chequeo general para ver qué tablas están dañadas:
mysqlcheck -u usuario -p --check nombre_base_datos
Te pedirá la contraseña. Verás un listado con cada tabla y un estado: OK o ERROR.
[WARNING]
Si la base de datos es enorme, este comando puede tardar varios minutos. No lo interrumpas, o podrías empeorar la corrupción.
Paso 2: Reparar tablas dañadas
Si el chequeo detectó errores, ahora ejecuta el mismo comando pero con --repair:
mysqlcheck -u usuario -p --repair nombre_base_datos
Esto intentará arreglar todas las tablas con problemas. Si funciona, verás un mensaje como "Repairing table nombre_base_datos.tabla" y al final "OK".
Paso 3: Reparar una tabla específica
Si solo una tabla está dañada, puedes repararla individualmente:
mysqlcheck -u usuario -p --repair nombre_base_datos.tabla_danada
Paso 4: Optimizar después de reparar
Después de reparar, es buena práctica optimizar las tablas para reorganizar los índices y liberar espacio:
mysqlcheck -u usuario -p --optimize nombre_base_datos
[INFO]
mysqlcheckfunciona tanto para MyISAM como para InnoDB, pero para InnoDB la reparación es más limitada. Si tienes tablas InnoDB corruptas, puede que necesites el método 3.
Método 2: Reparar tablas MyISAM con myisamchk
Si tu base de datos usa MyISAM y mysqlcheck no fue suficiente, podemos usar myisamchk, una herramienta de bajo nivel que accede directamente a los archivos .MYI.
Paso 1: Detener MySQL (opcional pero recomendado)
Para evitar conflictos, es mejor parar MySQL mientras usamos myisamchk. Esto requiere acceso root:
sudo systemctl stop mysql
O en algunos sistemas:
sudo service mysql stop
Paso 2: Localizar el directorio de datos
Normalmente está en /var/lib/mysql/. Entra al directorio de tu base de datos:
cd /var/lib/mysql/nombre_base_datos/
Paso 3: Ejecutar myisamchk
El comando típico para reparar es:
sudo myisamchk --recover tabla_danada.MYI
Si el error es más grave, usa --safe-recover:
sudo myisamchk --safe-recover tabla_danada.MYI
Paso 4: Reiniciar MySQL
sudo systemctl start mysql
[WARNING]
Importante: Nunca ejecutesmyisamchkcon MySQL en marcha, podrías dañar aún más los archivos. Asegúrate de que el servicio está detenido.
Método 3: Reparar tablas InnoDB (la técnica del ALTER)
InnoDB es más robusto pero cuando se corrompe, la reparación es más delicada. Un truco muy efectivo es usar ALTER TABLE para forzar a MySQL a reconstruir la tabla.
Paso 1: Conectar a MySQL
mysql -u usuario -p nombre_base_datos
Paso 2: Ejecutar ALTER TABLE
ALTER TABLE nombre_tabla ENGINE=InnoDB;
Esto fuerza a MySQL a recrear la tabla desde cero con el mismo motor. Si la tabla es MyISAM, cambia InnoDB por MyISAM.
Paso 3: Si falla, prueba con REPAIR TABLE
Dentro de MySQL también puedes ejecutar:
REPAIR TABLE nombre_tabla;
Paso 4: Activar la recuperación forzada (último recurso)
Si InnoDB está muy dañado y MySQL ni siquiera arranca, puedes añadir temporalmente en /etc/mysql/my.cnf:
[mysqld]
innodb_force_recovery = 1
Reinicia MySQL. Esto hace que InnoDB ignore los errores y arranque en modo de solo lectura. Luego puedes hacer un mysqldump de la BD para respaldarla y restaurarla en una BD nueva.
[WARNING]
Ojo:innodb_force_recoveryno debe usarse como solución permanente. Solo para rescatar datos. Después de hacer el respaldo, quita esa línea y restaura la BD.
Método 4: Reparar desde Plesk (interfaz gráfica)
Si no te sientes cómodo con la línea de comandos, Plesk tiene una opción gráfica.
- Ve a Bases de datos en el panel de Plesk.
- Selecciona la base de datos afectada.
- Haz clic en el botón "Reparar" (si está disponible en tu versión).
- Plesk ejecutará automáticamente
mysqlcheck --repairpor ti.
Esto es útil si tu hosting te da acceso a Plesk pero no a SSH.
¿Y si nada funciona? Plan B: Respaldo y restauración
Si has probado todos los métodos y la tabla sigue corrupta, el último recurso es restaurar un respaldo. Plesk crea copias de seguridad automáticas (si lo tienes configurado).
Paso 1: Localizar el respaldo
En Plesk: Herramientas y configuración → Administrador de copias de seguridad. Busca la copia más reciente de tu base de datos.
Paso 2: Restaurar
Selecciona el respaldo y elige "Restaurar" → solo la base de datos, no todo el sitio.
Paso 3: Exportar/Importar manualmente
Si no tienes respaldo, pero el servidor MySQL arranca, intenta exportar la BD con:
mysqldump -u usuario -p nombre_base_datos > respaldo.sql
Si solo una tabla está dañada, puedes usar --ignore-table=nombre_base_datos.tabla_danada para exportar el resto. Luego importa en una BD nueva:
mysql -u usuario -p nueva_base_datos < respaldo.sql
Preguntas frecuentes (FAQ)
¿Cada cuánto debo reparar mi base de datos?
No hay un intervalo fijo. La reparación es reactiva, no preventiva. Lo que sí debes hacer es monitorear los logs de MySQL (/var/log/mysql/error.log) para detectar errores tempranos.
¿La reparación borra datos?
No, las herramientas de reparación están diseñadas para preservar los datos. Intentan reconstruir índices y corregir inconsistencias internas. Eso sí, si una tabla está muy dañada, podría perder algunos registros, por eso siempre es recomendable tener respaldos.
¿Puedo reparar desde phpMyAdmin?
Sí, phpMyAdmin tiene una opción "Reparar" en la vista de tabla. Selecciona la tabla y en el menú inferior elige "Reparar tabla". Es equivalente a mysqlcheck --repair.
¿Qué pasa si no tengo acceso SSH?
Si estás en un hosting compartido con Plesk, usa la interfaz de Plesk o phpMyAdmin. Si no, contacta con tu proveedor de hosting.
¿Cómo sé cuál es mi versión de MySQL?
Ejecuta:
mysql --version
O en Plesk: Herramientas y configuración → Servidor → versión de MySQL.
Consejos finales para evitar futuras corrupciones
La prevención es mejor que la reparación. Aquí van algunos hábitos que te ahorrarán dolores de cabeza:
- Activa los respaldos automáticos en Plesk (diarios o semanales).
- Asegúrate de que el disco no esté lleno: un disco al 100% es la causa número uno de corrupción.
- Evita matar procesos MySQL con
kill -9o reiniciar el servidor a lo bruto. - Usa InnoDB en lugar de MyISAM siempre que puedas: es más resistente a caídas.
- Si usas WordPress, instala un plugin de caché para reducir la carga sobre la BD.
[TIP]
Configura un cron que ejecutemysqlchecksemanalmente. Puedes hacerlo desde Plesk en Herramientas y configuración → Programador de tareas. Un comando sencillo sería:mysqlcheck -u usuario -p'contraseña' --auto-repair --all-databases(cambia la contraseña por la real).
Resumen rápido de comandos
Si tienes prisa, aquí tienes la secuencia mágica:
# 1. Conectar por SSH
ssh usuario@servidor
# 2. Chequear BD
mysqlcheck -u usuario -p --check nombre_base_datos
# 3. Reparar BD
mysqlcheck -u usuario -p --repair nombre_base_datos
# 4. Optimizar BD
mysqlcheck -u usuario -p --optimize nombre_base_datos
# 5. Si falla, parar MySQL y usar myisamchk (solo MyISAM)
sudo systemctl stop mysql
cd /var/lib/mysql/nombre_base_datos/
sudo myisamchk --recover tabla.MYI
sudo systemctl start mysql
Y recuerda: siempre con calma y con respaldos. Reparar una base de datos MySQL en Plesk usando comandos no es ciencia espacial, pero requiere paciencia y método. Con estos pasos, en el 95% de los casos tendrás tu web funcionando de nuevo en menos de 15 minutos.
¿Te ha quedado alguna duda? Déjala en los comentarios y te ayudamos a resolverla.
