MySQL Activity Report,
een database tuning hulpprogramma

04-02-2006

Gert Dewit

De MySQL Activity report package is een tool die MySQL database administrators toe laat om verschillende database paramaters en variabelen te loggen. Deze rapporten kunnen bijvoorbeeld gebruikt worden voor server monitoring en performance tuning.

De belangrijkste component van het MySQL Activity Report is mysqlard. Deze daemon vraagt de status variabelen van een MySQL server op en stockeert deze in een Round Robin Database.

De package bevat verder nog een script om grafieken te maken op basis van de verzamelde gegevens, voorbeeld cron scripts om de grafieken te archiveren en een voorbeeld php script dat deze grafieken toont en automatisch enkele tuning tips geeft.

Een voorbeeld van de output van het php script vind je hier. Het voorbeeld is een snapshot van de database server van een klant waar op het niveau van de systeem variabelen al heel wat getuned is op basis van de input van mysqlard. De performantie kan echter nog verbeterd worden door meer indexen aan te maken en ervoor te zorgen dat de queries via deze indexen verlopen.

De package wordt verspreid onder de GPL.

Afhankelijkheden

Voor de opslag van de data in RRD's wordt gebruik gemaakt van Toby Oetiker's rrdtool library en het script om de grafieken te maken gebruikt het rrdtool programma.

De home page van rrdtool is : http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/

Het spreekt voor zich dat ook MySQL een afhankelijkheid is. Waarom zou je deze package willen installeren zonder MySQL ? Maar hou er rekening mee dat mysqlard gebruik maakt van de MySQL client library welke niet per se geïnstalleerd hoeft te zijn om MySQL server te draaien.

Download

De package kan vanaf deze site gedownload worden. Er is een aparte download pagina voorzien waar je steeds de laatste versie van de package kan vinden.

Kies het package formaat dat het best past bij je systeem. Je kan kiezen tussen tar.gz, i386 RPM (gemaakt op Fedora) en source RPM.

Installatie

Als je een RPM gebaseerde i386 distributie gebruikt, bijvoorbeeld Redhat, Fedora, Mandrake of SuSE, volstaat het om de binaire RPM te downloaden en vervolgens te installeren met het rpm commando of de grafische tool die je meestal gebruikt.

Om ervoor te zorgen dat de daemon opstart bij een reboot hoef je enkel

chkconfig --level 345 mysqlard on

uit te voeren. Let er wel op dat mysqlard opstart nadat MySQL gestart is, de daemon kan een restart van MySQL verdragen, maar het is wel nodig dat MySQL werkt bij de start van mysqlard.

Als je een RPM systeem hebt met een andere architectuur of indien je problemen hebt met de op Fedora aangemaakte binaire RPM kan je ook de source RPM downloaden en deze hercompileren met de --rebuild optie van rpm of rpmbuild.

Let er wel op dat je dan de MySQL development packages nodig hebt, mysql-devel-3.xx-1.

Voor diegenen die geen RPM gebaseerd systeem gebruiken is er ook een tarball beschikbaar. Om via deze weg te installeren moet de, in Open Source kringen weliswaar, gebruikelijke configure - make - make install cyclus doorlopen worden. Als voorbeeld hieronder de commando's zoals die gebruikt werden om de rpms te bouwen.

tar xzvf myslqard-1.0.0.tar.gz
cd mysqlard-1.0.0
./configure --prefix=/usr --sysconfdir=/etc --datadir=/var/lib
make
make install

Na de installatie vind je in datadir (in het voorbeeld /var/lib/mysqlard) een mysqlard.server script dat je aan je opstartsequentie dient toe te voegen (/etc/rc.d/ of /etc/rc.local afhankelijk van je distro). Verder vind je hier nog de voorbeeld cron en php scripts.

Configuratie

De configuratie gebeurt via de config file (normaal gezien /etc/mysqlard.cnf). Aan de hand van de commentaar die je daar vindt zou dit moeten lukken. De standaard installatie zou echter voor de meesten OK moeten zijn.

Beveiliging

Standaard probeert de Activity Report Daemon anoniem te connecteren. Indien dat niet mogelijk is bij jouw MySQL server, kan je de daemon ook met een user en/of paswoord laten connecteren.

Als gebruiker die de data opvraagt bij de MySQL server gebruik je best een aparte gebruiker die enkel USAGE permissies heeft op MySQL en geen enkele permissie op de databases. Als je van deze configuratie gebruik maat hoef je nergens plaintext paswoorden op te slaan. Als je de Activity Report Daemon op de MySQL server laat lopen kan je deze gebruiker aanmaken met

GRANT USAGE ON *.* TO mysqlar@localhost;

in een mysql shell.

Als je de daemon op een andere dan de MySQL host laat lopen, gebruik dan de hostname of het IP adres van die host in plaats van localhost.

Als je niet anoniem connecteert naar de MySQL server maar met de gebruiker mysqlar zoals hiervoor beschreven, moet je de opstartscript, bijvoorbeeld /etc/init.d/mysqlard, nog aanpassen zodat de daemon met deze gebruiker opgestart wordt. Zoek naar de lijn

${MYSQLARD} --step=${step} --datadir=${datadir}

en vervang dit door

${MYSQLARD} --step=${step} --datadir=${datadir} --user=mysqlar

als je de user uit het voorbeeld gebruikt hebt.

Als je de daemon niet als root wil laten lopen kan je een gelockte user aanmaken op systeemniveau om de daemon te laten lopen. In dat geval moet je het daemon opstartscript wijzigen. De eerder vermelde lijn uit het opstartscript wordt dan

su - marduser -c "${MYSQLARD} --step=${step} --datadir=${datadir} --user=mysqlar"

In ieder geval zou de mogelijke schade ten gevolge van het gebruik van de root account beperkt moeten zijn aangezien de daemon geen bestanden aanmaakt, bestanden leest, netwerk connecties aanvaardt, enz ...

Maar zoals een collega van me pleegt te zeggen :"Het is niet omdat je paranoïde bent, dat je niet gevolgd wordt."

Bugs en andere problemen

Neem gerust contact met me op als er zich problemen voordoen, maar kijk eerst eens in de FAQ.

English

Info

Projecten

Artikels