systemadmin.es > DBA > Uso de mk-find para realizar analyze y optimize de las tablas MySQL

Uso de mk-find para realizar analyze y optimize de las tablas MySQL

Tal como se ha comentado anteriormente, existen varios comandos para el mantenimiento de las tablas MySQL. Hoy vamos a ver como combinar mk-find con un shell script para realizar mediante cron periódicamente un analyze y un optimize a cada tabla de la base de datos.

Para ejecutar un comando SQL para todas las tablas lo podemos hacer con mk-find:

mk-find -p contrasenaMySQL --exec 'analyze table %D.%N;'

Podemos crear un script, por ejemplo en /usr/local/bin, con el siguiente mk-find:

  • analyze:
    #!/bin/bash
    exec /usr/local/bin/mk-find -p $(cat /var/mysql/.mysql.root.pass) --exec 'analyze table %D.%N;
    
  • analyze:
    #!/bin/bash
    exec /usr/local/bin/mk-find -p $(cat /var/mysql/.mysql.root.pass) --exec 'optimize table %D.%N;'
    

Para almacenar la contraseña del MySQL podemos usar un fichero en el datadir del MySQL con permisos restringidos, por ejemplo:

# ls -la /var/mysql/.mysql.root.pass
-r-------- 1 root root 13 Dec 22  2008 /var/mysql/.mysql.root.pass

A continuación podemos definir los crons según sea necesario en nuestra base de datos, en este caso se usa un analyze diario y un optimize semanal.

# analyze diario para todo el MySQL
0 6 * * * /usr/local/bin/analyze.mysql.sh

# optimize los domingos para todo el MySQL
30 6 * * 0 /usr/local/bin/optimize.mysql.sh

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>