systemadmin.es > DBA > Instalación de un servidor LAMP III (herramientas para MySQL)

Instalación de un servidor LAMP III (herramientas para MySQL)

Una vez instalado el MySQL deberemos instalar diferentes herramientas para la gestión del mismo, como pueden ser los backups el los comandos de mantenimiento de las tablas.

Las herramientas que vamos a instalar mediante los siguientes comandos son:

  • Rotación semanal de los logs de MySQL, tanto las slowqueries como el log general
  • Actualizar la información sobre la distribución de los valores de la tabla mediante el comando ANALYZE
  • Desfragmentar las tablas eliminando espacio que no se usa mediante el comando OPTIMIZE
  • Backup con mysqldump cada semana para tener un backup lógico de la base de datos

Estas herramientas usan el Maatkit, por lo que deberemos instalar los siguientes módulos de perl:

  • DBI
  • DBD::mysql
yum install perl-DateTime-Format-MySQL.noarch -y
yum install perl-Email-Date-Format.noarch -y
yum install perl-DateTime -y
yum install perl-Config-IniFiles.noarch -y
yum install perl-Time-HiRes -y
yum install perl-Class-DBI perl-DBD-MySQL -y
mkdir -p /usr/local/bin
svn export http://nagios-systemadmin.googlecode.com/svn/trunk/auxiliars/rotate.mysql.logs.sh /usr/local/bin/rotate.mysql.logs.sh
chmod +x /usr/local/bin/rotate.mysql.logs.sh
wget http://www.maatkit.org/get/mk-query-digest -O /usr/local/bin/mk-query-digest
chmod +x /usr/local/bin/mk-query-digest
wget http://www.maatkit.org/get/mk-find -O /usr/local/bin/mk-find
chmod +x /usr/local/bin/mk-find
cat > /usr/local/bin/optimize.mysql.sh <<EOF
#!/bin/bash
exec /usr/local/bin/mk-find -p \$(cat /var/mysql/.mysql.root.pass) --exec 'optimize table %D.%N;'
EOF
chmod +x /usr/local/bin/optimize.mysql.sh
cat > /usr/local/bin/analyze.mysql.sh <<EOF
#!/bin/bash
exec /usr/local/bin/mk-find -p \$(cat /var/mysql/.mysql.root.pass) --exec 'analyze table %D.%N;'
EOF
chmod +x /usr/local/bin/analyze.mysql.sh
cat > /usr/local/bin/backup.mysqldump.sh <<EOF
#!/bin/bash

#set -xv

BACKUP=/var/backup/mysqldump

SCHOME=/usr/local/bin

touch \$BACKUP/mysqldump.\$(date +%Y%m%d).err

        for taula in \$(\$SCHOME/mk-find -u root -p \$(cat /var/mysql/.mysql.root.pass));
        do
        db=\$(echo \$taula | sed 's/\`.\`/ /' | sed 's/\`//g' | awk '{ print \$1 }')
        taula=\$(echo \$taula | sed 's/\`.\`/ /' | sed 's/\`//g' | awk '{ print \$2 }')
        /usr/local/mysql/bin/mysqldump -uroot -p\$(cat /var/mysql/.mysql.root.pass) --routines --opt --host="127.0.0.1" --force \$db \$taula 2>> \$BACKUP/mysqldump.\$(date +%Y%m%d).err | gzip -c > \$BACKUP/backup_\${db}_\${taula}_\$(date +%Y%m%d).sql.gz
        done

/usr/bin/find \$BACKUP -mtime +14 -type f -exec rm -f {} \;

cat \$BACKUP/mysqldump.\$(date +%Y%m%d).err | grep -v "use locks with log tables"

exit 0
EOF
chmod +x /usr/local/bin/backup.mysqldump.sh
mkdir -p /var/backup/mysqldump

A continuación definiremos los siguientes crons:

cat >> /var/spool/cron/root <<EOF
#mysqldump
0  3 * * 0 /usr/local/bin/backup.mysqldump.sh
0  8 * * 0 /usr/bin/find /var/backup/mysqldump -mtime +14 -type f -exec rm -f {} \;

# analyze
0 6 * * * /usr/local/bin/analyze.mysql.sh

# optimize
30 6 * * 0 /usr/local/bin/optimize.mysql.sh

#logs mysql
0 0 * * 0 /usr/local/bin/rotate.mysql.logs.sh
EOF
pkill -1 crond

Deja un comentario:

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