Tag Archive for 'MySQL'

Weekly Snap: Puppet 2.5, Python Debugger, OSDC Partners & Icinga/Nagios Training

camera Weekly Snap: Puppet 2.5, Python Debugger, OSDC Partners & Icinga/Nagios Training

26 – 30 March ended the month with a good mix of Python and Puppet tips, MySQL lessons and events.

Eva started by thanking our sponsors, Linux Magazin, Admin Magazin and SuSE in the lead up to the Open Source Data Center Conference on 25 – 26 April.

Sebastian then encountered a strange MySQL master-master cluster error while Eric explained how to use the Python Debugger and Bernd forwarded news of the latest Puppet Enterprise 2.5 release.

Lastly, Phillipp celebrated our inaugural Icinga/Nagios Availability Monitoring training course in Düsseldorf, with a second to come on 21 – 25 May.

share save 171 16 Weekly Snap: Puppet 2.5, Python Debugger, OSDC Partners & Icinga/Nagios Training

MySQL und Puppet auf der CeBIT

Gleich startet der dritte CeBIT Tag von dem wir natürlich wieder auf Twitter und später hier im Blog berichten. Hier noch die Slides der Vorträge von Thomas und mir auf der Univention-Bühne. Wir freuen uns wie immer über Feedback.

 

MySQL CeBIT 2012 MySQL und Puppet auf der CeBIT

Puppet Cebit 2012 MySQL und Puppet auf der CeBIT

share save 171 16 MySQL und Puppet auf der CeBIT

Korrekte Speicherbelegung von InnoDB Tabellen

Heute halten wir uns recht einfach und sprechen über die Thematik der Speicherplatzbelegung von InnoDB Tabellen. Eine schlichte Kontrolle der reellen Nutzung ist hier einerseits wegen einem globalen Speicher für alle Tabellen aller DBs nicht möglich. Und wenn man die files_per_table Option aktiv hat, können auch noch reservierte, ‘freie’ Speicherbereiche in den Daten z.B. ein Summierung des Verzeichnis beeinflussen.

Daher müsste man von Tools wie z.B. phpMyAdmin gebraucht machen, um dies einmal kontrollieren zu können. Aber mit Zugriff auf das MySQL kann man auch über die Statusausgabe der Tabellen den benötigten Platz einsehen und errechnen. In der Übersicht der Informationen sind hier die Felder Data_length und Index_length entscheident.

Wenn man nun als Admin einmal schnell die Belegung über die Konsole abfragen möchten, könnte man sich mit folgenden Skript dafür helfen. Es wird mit der jeweligen Datenbank als Parameter aufgerufen und setzt einen Zugang zum MySQL mittels .my.cnf voraus:

#!/bin/bash
DATABASE=$1
TMPFILE="/tmp/$DATABASE-size"
 
mysql -e "show table status from $DATABASE;" > $TMPFILE
 
NAME=`head -n 1 $TMPFILE | sed -r 's/\t/\n/g' | grep -n Name | cut -d':' -f 1`
DATA=`head -n 1 $TMPFILE | sed -r 's/\t/\n/g' | grep -n Data_length | cut -d':' -f 1`
INDEX=`head -n 1 $TMPFILE | sed -r 's/\t/\n/g' | grep -n Index_length | cut -d':' -f 1`
echo -e "Name\t\tData_length in MB\t\tIndex_length in MB"
tail -n+2 $TMPFILE | awk '{print $'$NAME'"\t\t"$'$DATA'/1024/1024"\t\t"$'$INDEX'/1024/1024}'
echo
echo
echo -en "Sum in MB\t: "
for LINE in `tail -n+2 $TMPFILE | awk '{print $'$DATA'"\n"$'$INDEX'}'`; do
COUNT=$[$COUNT+$LINE]
done
echo $(($COUNT/1024/1024))
share save 171 16 Korrekte Speicherbelegung von InnoDB Tabellen

Weekly Snap: MySQL Backup, Teltonika & HTML/JavaScript Tips

camera Weekly Snap: MySQL Backup, Teltonika & HTML/JavaScript Tips6 – 10 February offered a nice mix of developer and sys admin tips, hardware and consulting news as well as general software food for thought.

Along these lines, Julian discovered the software complexity behind iPhones’ ‘home’ button, while Sebastian shared his tip for backing up MySQL with LVM snapshots.

Jannis then offered four JavaScript/HTML features for developers to impress their friends with – cross origin resource sharing, manifest files, deferred scripts and error objects.

Birger briefly reported on an Icinga project at Pegasus, transforming RDD files into SQL-ready performance data.

Lastly, Martin reassured shoppers at our hardware store, that there are alternatives to the much loved, but discontinued Teltonika ModemUSB/G10 GSM.

share save 171 16 Weekly Snap: MySQL Backup, Teltonika & HTML/JavaScript Tips

MySQL Sicherung mit LVM

Auch die robusteste MySQL-Replikation kann einmal zerbrechen, besonders wenn der Faktor Mensch einen nicht ganz unerheblichen Teil dazu beiträgt. Glücklich schätzen können sich also im Fehlerfall welche, die das DataDir auf einem Volume oder Dateisystem mit Snapshot-Funktionalität installiert haben.

Hat man einen konsistenten Master kann man mit folgenden Kommandos ein Backup erstellen und dieses zum Aufsetzen inkonsistenter,defekter oder neuer Slaves verwenden.

mysql> flush tables with readlock;
mysql> flush log;
mysql> show master status;
bash# lvcreate -s -n snap -L5G vg/lv
mysql> unlock tables;

Innerhalb weniger Sekunden ist das Backup erstellt. Allerdings wartet das “flush tables” die gerade aktiven Statements ab. Solange hier kein Ausreißer dabei ist, bleibt es auch beim sekundenschnellen Backup.

Das Snapshot-LV kann anschließend wie gewöhnlich eingehängt und die Daten auf das Zielsystem kopiert werden. “reset slave” und “change master to ….” auf dem Slave runden das Vorgehen ab.

share save 171 16 MySQL Sicherung mit LVM

Weekly Snap: Ozelot Reviewed, MySQL Replication & Web Photo Gallery Tips

camera Weekly Snap: Ozelot Reviewed, MySQL Replication & Web Photo Gallery Tips17 – 21 October shared tips for ensuring MySQL replication quality and creating webpage galleries from the command line, while giving a tick of approval for the latest Ubuntu release.

Ronny started by sharing handy tools to ensure MySQL replication integrity, from the Percona Toolkit (a.k.a. Maatkit). The command ‘table-checksum’, compares the contents of replicated tables using various algorithms and can even be built into the replication process. If variations are found,  he suggested ‘table-sync’ to correct them.

Lennart then created a simple HTML gallery straight from the shell, using a couple tools from the Image Magick project. With the help of Montage, he created a picture gallery with frames, captions and shadows. With the +Polaroid option, he created thumbnails that resemble Polaroids, tilted for a playful effect. Finally he also recommended jhead to automatically rotate Exif images.

To end the week, Marius reviewed the latest Ubuntu release- Ozelot. With Evolution replaced by Thunderbird for email, Synaptic replaced by “Software Center” to manage packages, LightDM as the new display manager, and Gnome3 offered for the UI, he gave the entire Ubuntu release his approval with a “+1”.

share save 171 16 Weekly Snap: Ozelot Reviewed, MySQL Replication & Web Photo Gallery Tips

MySQL Replikations-Integrität sicherstellen

Das Percona-Toolkit (Alias Maatkit) hapercona MySQL Replikations Integrität sicherstellentten wir ja schon einmal vorgestellt und heute möchten wir einen weiteren Aspekt der Tool-Sammlung hervorheben.

Denn wer kennt das nicht, eine Replikation unter MySQL mit Master-Slave oder Master-Master läuft über die Zeit hinweg stabil, doch nach und nach können sich Differenzen in den Daten einschleichen. Selbst wenn es nie einen Hinweis in der Replikation dafür gegeben hat. Dies kann durch Fehler jeder Art geschehen.

Genau dafür hat das Toolkit den ‘table-checksum‘ Befehl, der es einem ermöglicht, die Inhalte nach verschiedensten Algorithmen zu prüfen und mit Checksummen abzugleichen. Praktikabel lässt sich dies auch in Replikationen einbauen, welche durch die selbige die Befehle auch auf den Slaves zum exakt gleichen Stand ausführt.  Die Statemants dafür werden dann in einer gesonderten Tabelle und ggf. auch in einer eigenen Datenbank gespeichert und repliziert. Wenn Master und Slave die Abfragen durchgeführt haben ( Achtung, kann je nach Größe einige Zeit in Anspruch nehmen ), kann dann die Gegenprüfung beginnen. Ein schlichtes Beispiel Setup mit eigenem User würde wie folgt aussehen.
Erstellen der Checksummen:

pt-table-checksum --quiet --defaults-file PFAD --replicate DB.TABLE \
 --empty-replicate-table --create-replicate-table MASTER

Gegenprüfen der Summen:

pt-table-checksum --defaults-file PFAD --replicate DB.TABLE --replicate-check 1 MASTER

Sollte sich dann eine Differenz in den Daten aufzeigen, kann man dies über viele Wege wieder korrigieren, aber auch hierfür gibt es einen Befehl, dieser nennt sich ‘table-sync‘. Da es aber je nach Setup der Replikation und der Tabellen verschiedene Vorgehen gibt, wird hier nur kurz ein allgemeines Schema als Beispiel gezeigt, ausgehend von einer Master Slave Replikation, wobei der Master die korrekten Daten beinhaltet:

pt-table-sync --defaults-file PFAD --execute --replicate DB.TABLE MASTER

Alternativ würde auf folgendes gehen, wobei hier noch einmal alle Daten abgeglichen werden:

pt-table-sync --defaults-file PFAD --execute --sync-to-master SLAVE

Da die Überwachung der Inhalte mit ‘table-checksum’ automatisiert und die Return Codes ausgelesen werden können, eignet sich das ganze auch für ein Monitoring der Situation. Dies kann dann z.B. einmal in der Woche die Inhalte prüfen, je nach Größe der Daten.

share save 171 16 MySQL Replikations Integrität sicherstellen

Weekly Snap: NoSQL in MySQL, a Project at Deutsche Post & a New Apprentice

camera Weekly Snap: NoSQL in MySQL, a Project at Deutsche Post & a New Apprentice3 – 7 October thanked the monitoring team at Deutsche Post for being such a pleasure to work with and passed on news of the latest NoSQL/MySQL developments. Also, our newest junior addition in the development team Johannes, shared his first impressions and anticipation of all that is to come on board NETWAYS.

Birger followed with the realisation that the Deutsche Post was more electronic and less paper-laden than often thought. In a consulting project in Einbeck, he helped oil the IT infrastructure that ensures the paper post’s timely delivery. Implementing a mirrored monitoring environment with Icinga Core, Icinga Web, LConf, Business Process View, Grapher and Icinga Reporting, the end result offered something for both admins and management.

Meanwhile, Sebastian forwarded news of a preview release to provide NoSQL access methods in MySQL. Via memcached, the InnoDB Storage Engine can be accessed through the InnoDB APIs, bypassing the SQL Optimizer and Query Processing. This enables the best performance, while still offering InnoDB features such as row level locking and transactions, bringing the best of both worlds together. More information can be found on the InnoDB blog, as well as an installation guide.

share save 171 16 Weekly Snap: NoSQL in MySQL, a Project at Deutsche Post & a New Apprentice

NoSQL in MySQL

MySQL hat ein Technology-Preview vorgestellt und zum testen freigegeben in der man den NoSQL Daemon memcached über seinen MySQL-Server ansteuern kann. Der Zugriff erfolgt direkt über die InnoDB-API und somit am Query-Parser und Optimizer vorbei, um bestmögliche Performance zu bieten. Jedoch werden die InnoDB-Features wie Row-Level-Locking und Transaktionen unterstützt. Es werden so zu sagen die Vorzüge aus beiden Welten miteinander verschmolzen.

NoSQL ist im Vergleich zu MySQL oder PostgreSQL kein relationales Datenbankmodell. Tabellenschemata sind nicht fest und es wird meist auf JOIN-Operationen verzichtet.

In dieser technologischen Vorschau wird Memcached als gewöhnliches MySQL-Plugin installiert und funktioniert derzeit nur auf Linux Betriebssystemen. Außerdem besteht die Möglichkeit memcached über die my.cnf von MySQL zu konfigurieren.

Leider konnte ich selbst aus zeitlichen Gründen noch keine Erfahrungen sammeln bzw. ein Testsystem aufsetzen. Betont werden sollte auch, dass wie der Name “Technology-Preview” es bereits vermuten lässt noch längst nicht für einen Produktivbetrieb geeignet ist. Allerdings halte ich das Thema für sehr interessant und spannend. Anwendungsfälle würde es hierfür, denke ich, genug geben.

Für Neugierige und Interessierte gibt es auf den folgenden Links detaillierte Beschreibungen und Installationsanleitungen:

http://blogs.innodb.com/wp/2011/04/nosql-to-innodb-with-memcached/

http://blogs.innodb.com/wp/2011/04/get-started-with-innodb-memcached-daemon-plugin/

share save 171 16 NoSQL in MySQL

Oracle kündigt neue MySQL Enterprise Extensions an

Bereits vor gut einer Woche hat Oracle in seinem Blog neue Enterprise Module für MySQL angekündigt. Die Praxis gerade durch erweiterte Module, welche in größeren Umgebungen benötigt werden, Kunden zu binden und Umsatz zu generieren gab es auch vor Oracles Einstieg bei SUN/MySQL und ist natürlich auch nicht verwerflich.

Etwas traurig finde ich es jedoch, dass es in einem der neu ankündigten Module um eine überfällige Kernfunktionalität der Datenbank geht. Neben Enterprise High Availability und Enterprise Security wird zukünftig auch eine Enterprise Scalability Extension dazu kommen. Gerade Letztere optimiert eine bekannte Schwäche von MySQL und betrifft massgeblich die Skalierung auf Systemen mit vielen CPUs und dem aufwändigen Session und Statement-Handling auf DB-Seite. Genau an dieser Schwachstelle bessert Oracle jetzt nach, stellt die entsprechenden Erweiterung aber nur Vertragskunden zur Verfügung. Das ausgefeiltes Monitoring oder Backup in Erweiterungen angeboten werden, kann ich nachvollziehen. Den Zugang zu grundlegenden Optimierung des MySQL-Servers, die schon lange überfällig sind um mit der Konkurrenz wie PostgreSQL schritt zu halten, der Community zu verwehren ist der falsche Weg.

Gerade durch MySQL sichert sich Oracle aus meiner Sicht strategische Kunden die ggf. auch einmal auf den großen Bruder wechseln müssen und dessen Features für teueres Geld in Anspruch nehmen. Mit einer solchen Strategie treiben sie die User jedoch in die Arme anderer Lösungen und somit ist das Thema MySQL und Oracle dann erledigt. Ich kann gut damit leben, da sich gerade PostgreSQL in den letzten Monaten sehr gut weiterentwickelt hat und bisherige Schwächen, beispielsweise bei der Replikation, der Vergangenheit angehören. Warten wir es ab!

share save 171 16 Oracle kündigt neue MySQL Enterprise Extensions an