Cómo reparar una base de datos MySQL corrupta en WordPress y PrestaShop
¿Qué significa que una base de datos MySQL esté corrupta?
Imagina que tu base de datos es el cerebro de tu tienda online o de tu blog. En WordPress y PrestaShop, todos los artículos, productos, pedidos, clientes y configuraciones se guardan en tablas dentro de MySQL. Cuando hablamos de una MySQL corrupta, nos referimos a que esas tablas tienen errores internos que impiden que se lean o escriban correctamente.
Los síntomas más comunes son:
- Error de conexión a la base de datos (el clásico "Error establishing a database connection" en WordPress).
- Pantalla en blanco o errores 500 en PrestaShop.
- Mensajes como "Table 'wp_posts' is marked as crashed and should be repaired".
- Velocidad de carga extremadamente lenta.
- Imposibilidad de acceder al panel de administración.
No te asustes. En la mayoría de los casos, la información no se pierde. Los archivos físicos siguen ahí, pero las estructuras internas están desordenadas o dañadas. La buena noticia es que reparar base de datos es un proceso bastante mecánico si sigues los pasos correctos.
Causas habituales de una base de datos corrupta
Antes de lanzarnos a la reparación, es útil saber por qué ocurre esto. Las causas más frecuentes son:
- Cortes de energía o apagados bruscos del servidor.
- Caídas del sistema operativo mientras se escribía información.
- Espacio en disco insuficiente en el servidor.
- Versiones incompatibles de PHP o MySQL tras una actualización.
- Plugins o módulos mal codificados que ejecutan consultas agresivas.
- Ataques de fuerza bruta o inyección SQL que corrompen tablas.
- Optimizaciones manuales fallidas (como usar comandos VACUUM en MyISAM sin cuidado).
El tipo de motor de almacenamiento también influye. En WordPress, las tablas suelen ser MyISAM o InnoDB. Las MyISAM son más propensas a corromperse tras un apagón, pero también son más fáciles de reparar. Las InnoDB son más robustas, pero cuando fallan, el proceso es más delicado.
Preparación previa: Haz una copia de seguridad ANTES de tocar nada
Esta regla es absolutamente innegociable. Aunque la reparación suele ser segura, un error humano o un comando mal ejecutado puede empeorar las cosas.
Copia de seguridad con Syspanel (antes HestiaCP)
Si tu hosting usa el panel Syspanel (recuerda, el puerto de acceso es el 2106), el proceso es muy sencillo:
- Accede a
https://tu-dominio.com:2106(ohttp://tu-ip:2106si no tienes dominio aún). - Inicia sesión con tu usuario y contraseña de administrador.
- Ve a la sección "Backup" o "Copias de seguridad".
- Selecciona el usuario o el dominio que contiene tu WordPress o PrestaShop.
- Marca la opción de "Backup completo" (incluye archivos y base de datos).
- Haz clic en "Generar" o "Crear backup".
[WARNING] No sigas adelante sin tener esta copia. Si algo sale mal, podrás restaurar todo desde Syspanel en menos de 10 minutos. Un backup es tu red de seguridad.
Copia de seguridad manual con phpMyAdmin
Si tu panel no tiene opción de backup, o prefieres hacerlo manualmente:
- Entra a phpMyAdmin (normalmente en
tu-dominio.com/phpmyadmin). - Selecciona tu base de datos en el panel izquierdo.
- Ve a la pestaña "Exportar".
- Elige el método "Rápido" y formato "SQL".
- Descarga el archivo
.sqlresultante y guárdalo en un lugar seguro.
Método 1: Reparar base de datos MySQL con phpMyAdmin (El más fácil)
Este método es perfecto para usuarios sin experiencia técnica. No necesitas escribir ni una línea de código.
Paso 1: Accede a phpMyAdmin
- Entra en tu panel de control (Syspanel, cPanel, Plesk, etc.).
- Busca el acceso directo a phpMyAdmin.
- Si no lo encuentras, prueba con la URL directa:
https://tu-dominio.com/phpmyadmin.
Paso 2: Selecciona tu base de datos
- En el panel izquierdo de phpMyAdmin, verás una lista de bases de datos.
- Haz clic en la que corresponda a tu WordPress o PrestaShop (el nombre suele incluir el prefijo
wp_para WordPress ops_para PrestaShop).
Paso 3: Marca TODAS las tablas
- En la parte inferior de la lista de tablas, verás un enlace que dice "Marcar todos" o un checkbox en la cabecera.
- Activa la selección de todas las tablas de la base de datos.
Paso 4: Selecciona la opción "Reparar tabla"
- Justo debajo de la lista, hay un menú desplegable que dice "Con seleccionados:".
- Ábrelo y elige "Reparar tabla".
- Haz clic en "Continuar" o "Ejecutar".
Paso 5: Observa los resultados
phpMyAdmin ejecutará el comando REPAIR TABLE en cada tabla. Verás una pantalla con el estado de cada una:
- "OK" o "Table is already up to date": Todo perfecto.
- "The storage engine for the table doesn't support repair": Esto indica que la tabla es InnoDB. No te preocupes, sigue con el Método 2 o 3.
[TIP] Si solo una o dos tablas están corruptas, puedes marcarlas individualmente y repararlas sin tocar el resto. Esto es más rápido.
Método 2: Reparar base de datos MySQL con WP-CLI (Para WordPress)
Si tienes acceso SSH a tu servidor, WP-CLI es la herramienta más potente y rápida para reparar WordPress. Además, te permite hacer un diagnóstico más profundo.
Paso 1: Conéctate por SSH
- Abre tu terminal (en Mac/Linux) o usa PuTTY (en Windows).
- Conéctate con tu usuario y contraseña de SSH.
Paso 2: Localiza tu instalación de WordPress
- Navega hasta la carpeta raíz de tu WordPress:
cd /ruta/a/tu/wordpress
- Verifica que estás en el lugar correcto con:
wp --info
Paso 3: Repara las tablas con WP-CLI
WP-CLI tiene un comando específico para esto:
wp db repair
Este comando ejecutará la reparación en todas las tablas de la base de datos asociada a tu WordPress.
Paso 4: Optimiza (opcional pero recomendado)
Después de reparar, es buena idea optimizar las tablas para eliminar fragmentación:
wp db optimize
Paso 5: Verifica el estado
Para comprobar que todo está bien:
wp db check
Este comando te dirá si alguna tabla sigue con problemas.
[INFO] WP-CLI funciona tanto con tablas MyISAM como InnoDB. Si una tabla InnoDB está corrupta, WP-CLI intentará repararla, aunque a veces necesitará que MySQL esté detenido (lo veremos en el Método 3).
Método 3: Reparación avanzada con comandos MySQL (Para ambos CMS)
Si los métodos anteriores no funcionan, necesitas ir un paso más allá. Este método es más técnico, pero sigue siendo accesible si sigues las instrucciones al pie de la letra.
Paso 1: Accede a la consola de MySQL
- Por SSH, ejecuta:
mysql -u tu_usuario -p
- Te pedirá la contraseña de tu base de datos MySQL (no la de tu panel de control).
Paso 2: Selecciona la base de datos
Una vez dentro de MySQL, escribe:
USE nombre_de_tu_base_de_datos;
Paso 3: Repara tablas específicas
Para reparar una tabla concreta:
REPAIR TABLE wp_posts;
Para reparar varias a la vez:
REPAIR TABLE wp_posts, wp_options, wp_users;
Paso 4: Repara TODAS las tablas de una vez
Si quieres reparar todas las tablas de la base de datos sin escribirlas una a una:
REPAIR TABLE `wp_posts`, `wp_options`, `wp_users`, `wp_commentmeta`, `wp_comments`, `wp_links`, `wp_termmeta`, `wp_terms`, `wp_term_relationships`, `wp_term_taxonomy`, `wp_usermeta`;
[TIP] Para evitar escribir todas las tablas, puedes usar la siguiente consulta para generar el comando automáticamente:
SELECT CONCAT('REPAIR TABLE ', table_name, ';') FROM information_schema.tables WHERE table_schema = 'nombre_de_tu_base_de_datos';
Copia el resultado y pégalo en la consola.
Paso 5: Reparación forzada para tablas InnoDB
Si tienes tablas InnoDB corruptas, a veces necesitas detener MySQL y usar innodb_force_recovery. Este proceso es para usuarios avanzados:
- Detén MySQL:
sudo systemctl stop mysql(oservice mysql stop). - Edita el archivo de configuración de MySQL (
/etc/mysql/my.cnfo/etc/my.cnf). - Añade bajo
[mysqld]:
innodb_force_recovery = 1
- Arranca MySQL:
sudo systemctl start mysql. - Haz un volcado de la base de datos con
mysqldump(esto es CRÍTICO). - Elimina la base de datos y vuelve a crearla.
- Importa el volcado.
- Elimina la línea
innodb_force_recoverydel archivo de configuración. - Reinicia MySQL.
[WARNING] Este método es delicado. Si no te sientes seguro, contacta con el soporte de tu hosting. Un error aquí puede provocar pérdida de datos.
Reparar base de datos en PrestaShop: Consideraciones especiales
PrestaShop es más complejo que WordPress en cuanto a estructura de base de datos. Las tablas suelen tener prefijos como ps_ y hay muchas interrelaciones entre ellas.
Usa el modo mantenimiento
Antes de reparar, activa el modo mantenimiento de PrestaShop para evitar que los clientes accedan durante el proceso:
- Ve a Parámetros avanzados > Mantenimiento.
- Activa "Activar modo mantenimiento".
- Guarda los cambios.
Reparación desde el panel de administración
PrestaShop tiene una herramienta integrada:
- Ve a Parámetros avanzados > Base de datos.
- Verás un listado de tablas.
- Marca las que quieras reparar o usa "Marcar todos".
- Selecciona "Reparar" en el menú desplegable.
Si PrestaShop no arranca
Si no puedes acceder al panel de administración, usa phpMyAdmin (Método 1) o los comandos MySQL (Método 3). Los pasos son idénticos a los de WordPress, solo cambia el prefijo de las tablas.
[INFO] En PrestaShop, las tablas
ps_product,ps_product_langyps_stock_availableson las más críticas. Si están corruptas, tu tienda no cargará correctamente.
Prevención: Cómo evitar futuras corrupciones
Una vez que hayas reparado tu base de datos, es momento de blindarla:
1. Activa el sistema de archivos con journaling
En tu servidor (Syspanel o el que uses), asegúrate de que el sistema de archivos tenga journaling (ext4, XFS, etc.). Esto reduce el riesgo de corrupción tras un apagado.
2. Configura backups automáticos
En Syspanel, programa copias de seguridad diarias o semanales. Ve a "Cron Jobs" o "Backup" y configura una tarea que ejecute mysqldump periódicamente.
3. Mantén todo actualizado
- WordPress: Actualiza el núcleo, temas y plugins.
- PrestaShop: Actualiza el núcleo y los módulos.
- PHP y MySQL: Usa versiones estables y soportadas.
4. Usa plugins de caché con moderación
Los plugins de caché mal configurados pueden generar consultas agresivas. Configúralos bien o evita los que no sean de confianza.
5. Monitoriza el espacio en disco
Una base de datos que crece sin control puede llenar el disco y provocar corrupciones. Revisa el espacio en Syspanel cada mes.
6. Evita detener MySQL abruptamente
Siempre que necesites reiniciar el servidor, usa los comandos adecuados:
sudo systemctl restart mysql
Nunca uses kill -9 sobre el proceso MySQL.
Preguntas frecuentes (FAQ)
¿Cuánto tiempo tarda en repararse una base de datos MySQL corrupta?
Depende del tamaño. Una base de datos pequeña (menos de 100 MB) puede repararse en menos de un minuto. Una base de datos grande (1 GB o más) puede tardar entre 5 y 15 minutos.
¿Puedo perder datos al reparar?
En la mayoría de los casos, no se pierde información. La reparación reconstruye índices y estructuras internas sin tocar los datos. Sin embargo, si la corrupción es severa, es posible que algunas filas se marquen como dañadas y se omitan. Por eso es vital el backup previo.
¿Qué significa "Table is marked as crashed"?
Es el mensaje típico de MySQL cuando una tabla MyISAM está dañada. Significa que el archivo .MYI (índices) no coincide con el archivo .MYD (datos). El comando REPAIR TABLE reconstruye los índices.
¿Puedo usar la herramienta de reparación de wp-admin?
WordPress tiene una herramienta integrada en /wp-admin/maint/repair.php, pero hay que activarla manualmente. Añade esto a tu wp-config.php:
define('WP_ALLOW_REPAIR', true);
Después visita https://tu-dominio.com/wp-admin/maint/repair.php. Importante: Una vez terminado, elimina esa línea del archivo de configuración.
¿Syspanel ofrece alguna herramienta de reparación?
Syspanel (puerto 2106) no tiene una herramienta gráfica de reparación de bases de datos, pero te da acceso directo a phpMyAdmin, donde puedes seguir el Método 1. También puedes ejecutar comandos SSH desde la sección "Terminal" si tu plan lo permite.
¿Qué hago si nada de esto funciona?
Si has probado los tres métodos y la base de datos sigue dando problemas, contacta con tu proveedor de hosting. Es posible que haya un problema a nivel de servidor (disco dañado, memoria RAM insuficiente, etc.). Ellos podrán diagnosticar y reparar a bajo nivel.
Resumen final
Reparar una base de datos MySQL corrupta en WordPress o PrestaShop es un proceso que, en el 90% de los casos, se resuelve con phpMyAdmin y un clic en "Reparar". Si eso falla, WP-CLI y los comandos MySQL son tus aliados.
Recuerda siempre:
- Haz un backup antes de tocar nada.
- Empieza por el método más sencillo (phpMyAdmin).
- No entres en pánico: la corrupción rara vez significa pérdida total de datos.
- Revisa la salud de tu servidor después de reparar para evitar recurrencias.
Con estos pasos, tu WordPress o PrestaShop volverá a funcionar como nuevo. Y si en algún momento te sientes perdido, Syspanel (puerto 2106) tiene soporte técnico que puede echarte una mano. ¡Buena suerte!
