Configurant el MySQL al DRBD

Ara que ja tenim el servidor redundant (però redundant del tot eh! jaja), anem a donar-li alguna utilitat, perquè per ara està configurat per a que monitoritze el HeartBeat al Apache, però este no està configurat per a que siga redundant, simplement està per a saber quan està o no en marxa.

Instal·lació i configuració del servidor MySQL
Anem a instalar el MySQL i configurar-lo per a que siga redundant, és molt fàcil. Primer que res s’instal·la el servidor MySQL als dos servidors i es configura com si foren independents (al final la configuració que valdrà serà la del servidor 1)
root@pc:/# apt-get install mysql-server mysql-common mysql-client

Aixina amb el client podem provar que està en marxa quan s’acabe la instal·lació:
root@pc:/# mysql -u root -p

I si tot va be ja estarem en la línia de comandament del servidor MySQL. Després d’aquesta comprovació (que s’ha de fer precís i així sabem que com a mínim fins a ací arriba be) es configura la redundancia de les dades al servidor 1, així que tot el que s’explica a continuació fa referència al servidor 1.
Parem el servici:
root@pc:/# mysqladmin -p shutdown

I ara anem a moure els fitxers de configuració i de la base de dades a la partició del DRBD. Ací explique com fer-ho sensefer backups dels fitxers però és recomanable que abans de moure cap arxiu també es faja un backup d’aquestos ‘per si les mosques’, quedeu avisats!
Primer creem una carpeta per a tenir-ho tot ben estructurat en la partició del DRBD:
root@pc:/# mkdir /mnt/mysql

Migrem la carpeta de configuració a aquesta carpeta i fem un enllaç simbolic que reemplaça la carpeta anterior:
root@pc:/# mv -f /etc/mysql /mnt/mysql/conf
root@pc:/# ln -s /mnt/mysql/conf /etc/mysql

Ara es mou la carpeta on es troben les db’s:
root@pc:/# mv -f /var/lib/mysql /mnt/mysql/data
root@pc:/# chown mysql:mysql /mnt/mysql/data
<– Per a que funcione correctament el MySQL aquesta carpeta tindrà com a owner l’usuari que utilitze mysqld (per defecte mysql).

I es modifica l’axiu de configuració per a indicar la nova ruta, així que s’edita el my.cnf que es troba al /etc/mysql, modificant el paràmetre datadir:
datadir = /mnt/mysql/data

Finalmente posem en marxa una altra vegada el servici de mysql
root@pc:/# /etc/init.d/mysql start

Si ha arrancat el servici comprobem que es pot accedir correctament
root@pc:/# mysql -u root -p

I funciona, a que si? Be ací he supost que l’usuari per a accedir al servidor de dades és el root i que necessita password. També s’havera pogut configurar la carpeta de bd’s com la de configuració, és a dir, mitjançant enllaços simbòlics però crec que aixina està tot més controlat.
Ara que ja està configurat l’apartat del MySQL al servidor 1 passem al servidor 2, que és més senzill. S’elimina la carpeta de configuració (recordeu que recomane fer primer un backup) i després es crea l’enllaç simbòlic a la carpeta de la partició DRBD:
root@pc:/# mysqladmin -p shutdown <– Parem el servici
root@pc:/# rm -fr /etc/mysql
root@pc:/# ln -s /mnt/mysql/conf /etc/mysql

Per a fer la prova de l’ou ara forcem el HeartBeat per a que el servidor 2 es pose en marxa i una vegada fet això tornem a posar en marxa el servici del MySQL i comprovem que es pot entrar, no fa falta que torne a escriure les ordres perquè ja està abans.
Funciona? Espere que si, a mi si que m’ha funcionat.

Configuració del HeartBeat
Tot el que es configura es farà tant en el servidor 1 com en el servidor 2. Ara passem a configurar el HeartBeat per a que monitoritze i pose en marxa el MySQL automàticament. Creem l’arxiu (si no està creat ja) /etc/ha.d/resource.d/mysql.resource amb el següent contingut:

#!/bin/bash
#
#This script is inteded to be used as resource script by heartbeat
#
#Mar 2006 by Monty Taylor
#
###
. /etc/ha.d/shellfuncs
case "$1" in
start)
res=`/etc/init.d/mysql start`
ret=$?
ha_log $res
exit $ret
;;
stop)
res=`/etc/init.d/mysql stop`
ret=$?
ha_log $res
exit $ret
;;
status)
if [[ `ps -ef | grep '[m]ysqld'` > 1 ]] ; then
echo "running"
else
echo "stopped"
fi
;;
*)
echo "Usage: mysql {start|stop|status}"
exit 1
;;
esac
exit 0

Que serà el script encarregat de posar en marxa i parar el servici de MySQL quan canvie de servidor (si està mal escrit en la referència que pose més avall es pot aconseguir)

Per a finalitzar la configuració del HeartBeat modifiquem l’arxiu /etc/ha.d/haresources afegint mysql al final de la línia, tenint en compte que aquesta instal·lació s’ha fet als servidors que hem configurat en el post anterior, l’arxiu quedaria així:
server1 drbddisk::r0 Filesystem::/dev/drbd1::/servidor::ext3 IPaddr2::10.7.250.10/16/eth0 apache2 mysql

Es reinicia el servei de HeartBeat als dos servidors…. i a rodar!!! Ja es pot fer les proves per a comprovar

Webs d’interés
==============
http://downloads.mysql.com/docs/mysql-ha-drbd-en.pdf