A continuació deixo un petit post de com muntar un sistema automàtic de notificació via mail que ens indiqui quin és l'estat de la nostra base de dades. Per exemple el podem programar una mica abans de començar la nostra jornada laboral i abans de marxar o mentre estem de vacances (jaja. ..). Aquest exemple és sobre un Mysql 5.X corrent a Debian. Passos que segueix:
- Revisió de temps d'activitat del servidor, memòria i espai de disc.
- Revisió de les últimes còpies de seguretat o els logs de les mateixes
- Obtenció de l'estat de la base de dades
- Logs d'error de la base de dades.
- Notificació via mail.
El sistema consisteix en construir un script que construeixi el nostre informe en un fitxer per després enviar-lo per correu. A més, en aquest exemple l'estat de la base de dades que obtinc amb mysqlreport *. Aquest ens dóna prou informació per saber que ha passat darrerament a la base de dades i podem detectar qualsevol problema si sabem quina és la línia base.
* Cura perquè està disponible a partir de la versió 5.x
Pas 1) Edició báscia de l'script base checklist.sh. Com es pot observar no té cap secret ja que es tracta només de redirigir sempre la sortida d'un ordre concret a un fitxer temporal que després adjuntem com a cos del mail o adjunt. El format i l'estil ja són coses de cada un ...
#!/bin/bash # # Checklist diari mysql # # Paràmetres LOG=/scripts/checklist/check.txt
# A continuació comencen les accions van TXT='' SL='' # Estat de la màquina TXT='>>> 0.UPTIME' echo $TXT > $LOG w >> $LOG # Memòria del servidor TXT='>>> 1.MEMORIA' echo $SL >> $LOG echo $TXT >> $LOG free -m >> $LOG #Espai en disc TXT='>>> 2.ESPAI EN DISC' echo $SL >> $LOG echo $TXT >> $LOG df -h >> $LOG # Darrers backups TXT='>>>3.BACKUPS' echo $SL >> $LOG echo $TXT >> $LOG ls -lh -t /var/backups_mysql/ >> $LOG #Estat mysql TXT='>>>4.ESTADO MYSQL' echo $SL >> $LOG echo $TXT >> $LOG mysqlreport –user root –password pwd –all >> $LOG
# Notificació via mail echo “Checklist”|mail .s “MYSQL > Checklist diari” ilmasacratore@dataprix.com < $LOG # Esborrem fitxer temp rm $LOG
|
Pas 2) Permisos d'execució i programació
En el cas de sistemes unix podem utilitzar crontab per programar l'execució, prèvia assignació de permisos d'execució al fitxer per a l'usuari que vagi a ficar-lo en la seva cron
Exemple de correu:
0.UPTIME 09:00:01 up 13:20, 0 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT >>> 1.MEMORIA total used free shared buffers cached Mem: 884 877 6 0 44 745 -/+ buffers/cache: 88 795 Swap: 737 0 737 >>> 2.ESPAI EN DISC Filesystem Size Used Avail Use% Mounted on /dev/sda1 17G 8.4G 7.9G 52% / tmpfs 443M 0 443M 0% /lib/init/rw tmpfs 443M 0 443M 0% /dev/shm >>> 3.BACKUPS >>> 4.ESTAT MYSQL MySQL 5.0.32-Debian_7et uptime 0 13:9:20 Wed Jul 14 09:00:01 2010 __ Key _________________________________________________________________ Buffer used 387.00k of 16.00M %Used: 2.36 Current 1.84M %Usage: 11.52 Write ratio 0.03 Read ratio 0.10 __ Questions ___________________________________________________________ Total 7.61k 0.16/s Com_ 5.47k 0.12/s %Total: 71.93 COM_QUIT 807 0.02/s 10.61 DMS 665 0.01/s 8.74 +Unknown 602 0.01/s 7.92 QC Hits 61 0.00/s 0.80 Slow 6 0.00/s 0.08 %DMS: 0.90 DMS 665 0.01/s 8.74 SELECT 648 0.01/s 8.52 97.44 UPDATE 12 0.00/s 0.16 1.80 DELETE 4 0.00/s 0.05 0.60 INSERT 1 0.00/s 0.01 0.15 REPLACE 0 0.00/s 0.00 0.00 Com_ 5.47k 0.12/s 71.93 show_create 1.15k 0.02/s 15.10 show_status 797 0.02/s 10.48 show_variab 797 0.02/s 10.48 __ SELECT and Sort _____________________________________________________ Scan 3.92k 0.08/s %SELECT: 605.09 Range 0 0.00/s 0.00 Full join 1 0.00/s 0.15 Range check 0 0.00/s 0.00 Full rng join 0 0.00/s 0.00 Sort scan 7 0.00/s Sort range 1 0.00/s Sort mrg pass 0 0.00/s __ Query Cache _________________________________________________________ Memory usage 106.50k of 16.00M %Used: 0.65 Block Fragmnt 0.68% Hits 61 0.00/s Inserts 65 0.00/s Prunes 1 0.00/s Insrt:Prune 65:1 0.00/s Hit:Insert 0.94:1 __ Table Locks _________________________________________________________ Waited 0 0.00/s %Total: 0.00 Immediate 1.32k 0.03/s __ Tables ______________________________________________________________ Open 64 of 64 %Cache: 100.00 Opened 2.01k 0.04/s __ Connections _________________________________________________________ Max used 3 of 100 %Max: 3.00 Total 810 0.02/s __ Created Temp ________________________________________________________ Disk table 1.19k 0.03/s Table 3.52k 0.07/s File 5 0.00/s
|
Ara, a qui li agradi o sàpiga una mica del tema se li ocorren mil coses que afegir o coses que falten. Per algunes consultes concretes com a número de processos etc podem fer servir des línia de comandes mysqladmin-u <usuari>-p <clau> <opció> per obtenir més dades interessants ... Cada un que l'hi faci a la seva manera!!