monitoring von mysql server
am 01.07.2006 20:28:49 von unknownPost removed (X-No-Archive: yes)
Post removed (X-No-Archive: yes)
Post removed (X-No-Archive: yes)
Post removed (X-No-Archive: yes)
andreas fritz wrote:
> hallo,
>
> ich suche ein stück software für linux (debian 3.1) das in etwa
> folgendes bez. eines mysql 4.1 servers tut:
>
> - gucken ob mysql server up ist
> - gucken ob mysql server erfolgreich connect und ein query verarbeitet
> - gucken ob es irgendwelche crashed tables gibt und ggf.
> repair-kommandos absetzen
> - im falle von vorkommnissen email absetzt
>
> gibt es sowas wie ein monitoring tool für mysql das solche dinge tut?
In Google gesucht? Da gibts reichlich Treffer.
oder:
bash
mysql client
mysqladmin
sendmail/qmail/exim o.ä.
:-)
gruß, Frank
Post removed (X-No-Archive: yes)
andreas fritz wrote:
>>bash
>>mysql client
>>mysqladmin
>>sendmail/qmail/exim o.ä.
>>
>>:-)
>
> kein grund für den smilie, ich habe derzeit sogar so ein skript
> laufen. ;)
Kommt mir bekannt vor :-}
> ist nur nicht ganz perfekt es mit bash zu machen.
ACK. So ein Projekt wächst manchmal sehr schnell an, und da ist es besser,
es in einer "gescheiten" Programmiersprache zu haben.
hinausgehen, bash und mysql (Client) zu verwenden. Je nach
Rahmenbedingungen verwende ich entweder python mit dem MySQLdb-Modul oder
aber meine selbstgeschriebenen Bindings zu gawk, octave oder Matlab.
> bzw. mir fehlen
> einfach noch dinge die ich damit nicht hinbekommen habe, wie z.b. den
> check auf crashed tables.
Die Befehle CHECK TABLE und REPAIR TABLE existieren.
Thomas
> kein grund für den smilie, ich habe derzeit sogar so ein skript
> laufen. ;)
>
> ist nur nicht ganz perfekt es mit bash zu machen. bzw. mir fehlen
> einfach noch dinge die ich damit nicht hinbekommen habe, wie z.b. den
> check auf crashed tables.
>
> habe auch gegooglet, aber ausser diskussionen über nagios skripte
> nichts brauchbares gefunden. wenn du noch links weisst wäre ich
> dankbar für nennung.
So ungefähr?
mysql -udbuser -hdbhost -pdbpass dbname -e "show tables" | awk '{
system("mysql -udbuser -hdbhost -pdbpass dbname -e \"check table \""
$1}' | grep CHECK_DAMAGED_TABLES | awk '{print("Do something with
damaged table " $1)}'
Das ganze kann man natürlich auch in ein schönes bash script packen
for table in `mysql -udbuser -hdbhost -pdbpass dbname -e "show tables"`;
do
status=`mysql -udbuser -hdbhost -pdbpass dbname -e "check $table"`;
// prüfe status, repair und notification falls notwendig
sleep 10 // datenbank nicht zutrümmern
done
hth, Frank
andreas fritz
>
>>> ich suche ein stück software für linux (debian 3.1) das in etwa
>>> folgendes bez. eines mysql 4.1 servers tut:
>>>
>>> - gucken ob mysql server up ist
>>> - gucken ob mysql server erfolgreich connect und ein query verarbeitet
>>> - gucken ob es irgendwelche crashed tables gibt und ggf.
>>> repair-kommandos absetzen
>>> - im falle von vorkommnissen email absetzt
>>bash
>>mysql client
>>mysqladmin
>>sendmail/qmail/exim o.ä.
>>
>>:-)
>
> kein grund für den smilie, ich habe derzeit sogar so ein skript
> laufen. ;)
Solche Skripte hat wohl jeder, der einen Server ernsthaft am Start hat.
Allerdings sind die Anforderungen jedes Mal etwas anders und außerdem
ist so was auch recht schnell hingeschrieben. Ich habe hier von einem
früheren Job noch Skripte für CHECK/REPAIR TABLE (daily) und OPTIMIZE
TABLE (weekly). Aber da ist nix besonderes dran. Connect, SHOW TABLES,
Schleife mit CHECK TABLE und falls kaputt REPAIR TABLE. Mail schickt
cron ja ohnehin, wenn das Skript was ausgibt.
> ist nur nicht ganz perfekt es mit bash zu machen. bzw. mir fehlen
> einfach noch dinge die ich damit nicht hinbekommen habe, wie z.b. den
> check auf crashed tables.
Wenn die Logik etwas komplexer wird, bevorzuge ich Perl. Seit IIRC 4.0
kann MySQL übrigens MyISAM-Tabellen automatisch reparieren.
Nagios lohnt für einzelnen Server eher nicht. Aufwendige Sachen wie
OPTIMIZE TABLE will man ohnehin in eine verkehrsarme Zeit legen.
XL
Post removed (X-No-Archive: yes)
andreas fritz
> On Mon, 3 Jul 2006 16:22:46 +0200, Axel Schwenke
>
>
>>Nagios lohnt für einzelnen Server eher nicht. Aufwendige Sachen wie
>>OPTIMIZE TABLE will man ohnehin in eine verkehrsarme Zeit legen.
>
> ja, vor allem da es mir hierbei um insgesamt 5 datenbanken mit 55 mio.
> datensätzen und 4 GB grösse geht. der server hat auch so schon genug
> zu tun.
Naja, 4GB passen doch noch ins RAM :-)
> neben ab und zu mal einem gecrashten table kommt es vor das mysql mit
> 99% systemlast abschmiert und alle connects ewig auf antwort warten.
Entweder hat deine Hardware eine Macke (RAM? Netzteil?) oder du
verwendest eine alpha- oder beta-Release von MySQL. Falls mysqld
tatsächlich mal abschmieren sollte, würde es übrigens automatisch
neu gestartet.
Ich würde sagen, du solltest lieber das eigentliche Problem suchen
und abstellen. Und nicht an Symptomen herumdoktoren.
Als erstes könntest du ja mal das errorlog von MySQL lesen. Außerdem
im syslog nach Fehlern zur gleichen Zeit checken.
> da es garnicht so einfach ist diesen prozess dann loszuwerden (kein
> kill bewirkt hier noch was) und ein reboot nötig ist
Wenn kill -KILL nicht hilft, liegts nicht an MySQL, sondern am
Kernel/Devicedriver. Oftmals sind die Treiber für Festplatten-
Controller kaputt. Bei mir hängt sich immer mal ein Rechner weg,
wenn eine der SATA-Platten am SiI3114 nicht mehr reden mag. Dann
ist das ganze schöne RAID für die Katz :-(
XL
Post removed (X-No-Archive: yes)