La herramienta Mysqlcheck se encarga de comprobar, reparar, optimizara y analizar una o varias tablas del servidor mysql para detectar si existe algún problema.
Veamos algunos ejemplos sobre como utilizar la herramienta Mysqlcheck. Si una tabla se encuentra dañada o con algún problema, mostrará un mensaje de error.
Para utilizar la herramienta deberemos posicionarnos en el directorio bin donde tengamos instalado mysql, si no sabemos donde esta podemos buscarlo desde la terminal con el comando:
whereis mysql
Comprobar todas las tablas de una base de datos
El comando para ello es:
./mysqlcheck -c basededatos -u usuario -p, la opcion -c indica chequearAquí comprobamos todas las tablas de phpmyadmin utilizando el siguiente comando:
./mysqlcheck -c phpmyadmin -u root -p
Comprobar una tabla de una base de datos determinada
Para comprobar todas las tablas de una base de datos particular, especificamos la base de datos y el nombre de tabla.
Comprobamos una tabla wp_post de una base de datos unlinkwp de un sitio web realizado en Wordpress:
./mysqlcheck -c unlinkwp wp_posts -u root -p
Comprobar todas las tablas de todas las bases de datos
Para comprobar todas las tablas y todas las bases de datos debemos utilizar el parametro -all-databases, junto con la opción -c, como se muestra a continuación:
./mysqlcheck -c -u root -p –all-databases
Combinar las opciones de comprobación, optimización y reparación de tablas. Después de la comprobación, podemos reparar las tablas dañadas con el comando --auto-repair
Por ejemplo comprobar y reparar todas las tablas de todas las bases de datos
./mysqlcheck -u root -p --auto-repair -c -o –all-databasesTambien es posible combinar otras funcionalidades como optimizar y la funcionalidad de reparación juntos usando la opción -o (optimizar).
Si queremos información de la ejecución y tiempo de uso de CPU de las comprobaciones podemos añadir el parámetro –debug-info que irá recolectando información mientras se está comprobando, añadir el debug-info, como se muestra a continuación. Esto es muy útil si tenemos muchas tablas y bases de datos.
mysqlcheck --debug-info -u root -p –all-databasesSi quisiéramos utilizar la herramienta para hacer mantenimiento y optimización automática de las bases de datos que tenemos en el servidor, podemos programar una tarea con cron para que ejecute el comando.
Por ejemplo ejecutar el comando de comprobación y optimización todos los dias a las 5 AM.
Para ello desde la terminal ejecutamos el comando crontab -e y añadimos la siguiente linea de código:
0 5 * * * mysqlcheck -c -o -u usuario -pClave > /dev/null 2>&1También podemos crear una serie de comandos para el mantenimiento de la base de datos que incluya:
- Comprobar
- Optimizar
- Analizar
- Reparar
- Backup de la base de datos.
./mysqlcheck -u root -p --check --databases basededatos_a_chequear ./mysqlcheck -u root -p --optimize --databases basededatos_a_optimizar ./mysqlcheck -u root -p --analyze --databases baededatos_a_analizar ./mysqldump -u root -p --create-options --routines --triggers basededatos > ./backup.sqlOtra opción es hacer todo en una sola línea de código como mostramos anteriormente:
./mysqlcheck -u root -p --auto-repair -c -o -a –all-databases ./mysqldump -u root -p --create-options --routines --triggers basededatos > ./backup.sqlEs importante tener en cuenta que si ponemos estos comandos en un evento cron, la ejecución automática puede consumir muchos recursos tanto de procesador como de memoria RAM y provocar que el servidor quede fuera de servicio.