Weekly Snap: Puppet Security, InnoDB & Doctrine Configuration

20 – 24 February featured databases in the form of InnoDB table configuration and Doctrine nested sets, plus a Puppet security recommendation.
Ronny explained how to configure InnoDB tables correctly with the help of tools such as phpMyAdmin.
Continuing the database theme, Eric gave a quick rundown on applying nested sets in Doctrine 1.2 for those who are also running an older version.
Thomas recommended Puppet users to upgrade to 2.6.14 or 2.7.11 and protect themselves against security vulnerabilities.

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))

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

3 – 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.

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/

Sebastian Saemann
Sebastian Saemann
Head of Managed Services

Sepp kam von einem großen deutschen Hostingprovider zu NETWAYS, weil ihm dort zu langweilig war. Bei uns kann er sich nun besser verwirklichen, denn er leitet zusammen mit Martin das Managed Services Team. Wenn er nicht gerade Server in MCollective einbindet, versucht er mit seinem Motorrad einen neuen Geschwindigkeitsrekord aufzustellen.