MySQL: Convert dump from MySQL4 to MySQL5

Convert an old MySQL V4 Dump to MySQL V5. In my case the old database was in Latin1/ISO format and the db-engine was MyISAM.

# on the old server (mysql4x)
mysqldump --default-character-set latin1 testdb > testdb.sql
 
# on the new server (mysql5x)
# tweak ENGINE
sed -i -e 's/TYPE=MyISAM/ENGINE=MyISAM/' testdb.sql
mysql --default-character-set latin1 -D testdb < testdb.sql

Not sure if there are other SQL syntax changes from V4 to V5, in my case (simple database) it worked.

PowerDNS Endlosschleife

PowerDNS läuft Amok wenn man eigene DB-Queries verwendet und sich dabei an die Dokumentation hält – dort heißt es im Punkt „Master-Slave Queries„:

update-lastcheck-query

Called to update the last time a slave domain was checked for freshness. Default: update domains set notified_serial=%d where id=%d

Es müsste aber heissen:

update-lastcheck-query

Called to update the last time a slave domain was checked for freshness. Default: update domains set last_update=%d where id=%d

Leider verleitet der „Bug“ den Server alle 60s nach zuschauen ob alle Zonen noch „frisch“ sind. Da die falsche Spalte aktualisiert wird, hält den Server auch nichts davon ab dies jetzt jede 60s bei sämtlichen Domains zu tun.

Vor ziemlich genau einem Jahr ist das schon jemandem aufgefallen. Leider wurde es noch nicht geändert :(. (Ich versuche auch nochmal die Entwickler zum ändern der Doku zu bewegen ;).

Puppet: MySQL user management

Kleines Puppet Rezept um zu überprüfen ob ein MySQL User bereits existiert und falls nicht, diesen anzulegen:

class mysql-management {
 
    $mysql_password = "verysecure"
 
    exec { "mysql-password_nms" :
        path => ["/bin", "/usr/bin", "/usr/sbin"],
        unless => "bash -c \"if [ `mysql -B -N -u admin -p$mysql_password -e \\"SELECT COUNT(*) FROM mysql.user WHERE user='manager' AND host='localhost'\\"`  == \\"1\\" ]; then exit 0; else exit 1; fi;\"",
        command => "mysql -u admin -p$mysql_password -e \"GRANT ALL ON *.* TO manager@'localhost' IDENTIFIED BY 'superpassword' WITH GRANT OPTION;\""
    }
}

Das Kommando bei „unless“ finde ich etwas umständlich – aber mir ist nichts eleganteres eingefallen um auf einen User zu prüfen… Nachtrag: Das vorgesetzte Bash-Kommando ist notwendig damit das IF-Konstrukt auch auf allen Systemen funktioniert. Puppet setzt anscheinend je nach Distribution auf einen anderen Interpreter. Damit wird die Escape-Orgie aber nur noch schöner.

SNMP-Agent für MySQL

Vor Jahren habe ich für Cacti ein Script geschrieben welches MySQL-Informationen über eine native MySQL-Verbindung ausliest und anzeigt. Jetzt wollte ich das selbe Script eigentlich fit für OpenNMS bzw. SNMP machen.

Die Arbeit kann ich mir zum Glück sparen. Es gibt mittlerweile einen eleganteren Ansatz: mysql-snmp (Projektseite).

Für OpenNMS User wird anscheinend sogar schon die fertige Konfiguration mitgeliefert. Ausprobiert habe ich das ganze noch nicht – werde ich aber sicher sehr bald 😉

MySQL 4 unter Debian/Ubuntu (für CAO)

Da die freie Warenwirtschaft & Buchhaltung CAO (www.cao-faktura.de) aus verschiedenen Gründen nicht mit MySQL 5 klarkommt (bzw. klarkommen will), folgend die nötigen Schritte einer MySQL 4 Installation parallel zu Mysql 5 unter Debian Etch (sollte aber auch mit anderen Distributionen so klappen). MySQL 4 wird in diesem Beispiel auf Port 3307 laufen.

„MySQL 4 unter Debian/Ubuntu (für CAO)“ weiterlesen